рд╢реБрдн рджрд┐рдиред рдореИрдВ рдПрдХ рд▓рд╛рдЗрд╡ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ Node.JS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдмрд░-рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдкрд╛рдВрдЪ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреБрд░рд╛рдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ - рдЙрдкрд▓рдмреНрдзрд┐рдпреЛрдВ рдХреА рд╕реЗрд╡рд╛ред

рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдХрдо рд▓рд╛рдЧрдд рд╕реЗ рдЙрдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реНрдЯреИрдХ рдХреЛ рдЪреБрдирд╛ - Node.JS + mongoDB, рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдРрд╕реА рддрдХрдиреАрдХреЗрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЬрд╛рдирддрд╛ рд╣реВрдВред
рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣рд╛рдВ рдореИрдВ рдХреЗрд╡рд▓ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдореИрдВрдиреЗ рдЦреБрдж рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдерд╛ред
рдордЬрдмреВрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ
рдиреЛрдб.рдЬреЗрдПрд╕ рдЕрдкрдиреА рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА I / O рдХреЙрд▓ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрднреА-рдХрднреА рдпрд╣ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ - рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд╡реЗрд░реА рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЕрдиреНрдп рдХреНрд╡реЗрд░реА рдмрдирд╛рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдЕрдиреНрдп рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВред рдзрд╛рд░реНрдорд┐рдХ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдореИрдВрдиреЗ
рдореЛрдВрдЧреЛрдЬрд╝ (ORM рдХреЗ рд▓рд┐рдП рдореЛрдВрдЧреЛрдбрдм) рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ,
рдиреЛрдб-рдореЛрдВрдЧреЛрдбрдм-рджреЗрд╢реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд░реНрд╕рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрд▓рдмреИрдХ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ:
db.collection('table', function(err, collection) { collection.findOne({uid:uid}, function(err, doc) { cb(doc); }); });
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд╛рд░реНрдп, рдПрдХ рдХреЙрд▓ рдХреЙрд▓ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ:
db.collection('table', function(err, collection) { collection.findOne({uid:uid}, function(err, doc) { db.collection('table2', function(err, collection) { collection.findOne({size:doc.size}, function(err, doc) { cb(doc); }); }); }); });
рдпрд╣ Coffescript рдпрд╛ Async рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ, рджреЛрдиреЛрдВ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рдмрдирд╛рддреЗ рд╣реИрдВред рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдХреЙрд▓ рдХреЛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ - рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд░реВрдк рдореЗрдВ рд▓рд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА, рдХреЙрд▓ рдХреА рдПрдХ рд▓рдВрдмреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рд╛рде, рдпрд╣ рдЗрд╕ рдмрд╣реБрдд рд╣реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЯреНрд░реИрдХрд┐рдВрдЧ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред
рдбрд┐рдмрдЧрд┐рдВрдЧ
рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ Node.JS рдореЗрдВ рдХреНрд░реИрд╢ рд╣реЛрдиреЗ рд╕реЗ рдХреЛрдИ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдРрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рди рдкрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХреНрдпрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИред
events.js:71 throw arguments[1]; // Unhandled 'error' event ^ Error: socket hang up at createHangUpError (http.js:1264:15) at Socket.socketOnEnd [as onend] (http.js:1352:23) at TCP.onread (net.js:419:26)
рдЗрд╕ рд▓реЙрдЧ рджреНрд╡рд╛рд░рд╛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ http рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ред рдФрд░ рдЕрдЧрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ http рдХреЙрд▓ рд╣реИ? рддреНрд░реБрдЯрд┐ рдХреЗ рдХрд╛рд░рдг рдХреМрди рд╕рд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рджреВрд╕рд░реА рддрд░рдл рд▓реЙрдЧ рдХреЛ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ред
рд╕рджреИрд╡
Node.JS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╢рд╛рдпрдж рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред рдпрд╣ рдореЙрдбреНрдпреВрд▓ рдЖрдкрдХреЛ рдиреЛрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рдХреНрд░реИрд╢ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдореЗрд╢рд╛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рдХрд╛рдВрдЯреЗред рдирддреАрдЬрддрди, рд╢реАрд░реНрд╖ рдореЗрдВ рд╣рдо рдПрди рдиреЛрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреМрди рд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд┐рддрдиреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддреА рд╣реИред рдкреАрдЖрдИрдбреА тАЛтАЛрдХреЛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд╕реВрдЪреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
рдХреИрдЪрд┐рдВрдЧ рдПрд░рд░
Node.JS рд╕реНрд╡рдпрдВ рдФрд░ рдХрдИ рдореЙрдбреНрдпреВрд▓ CommonJS рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ I / O рдХреЙрд▓ рдХреЗ рдмрд╛рдж рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрднрд╡ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╡реИрд╕реЗ, Node.JS = рд▓рдЧрд╛рддрд╛рд░ "рдХрд┐рдХ" рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЪреВрдВрдХрд┐ рдореЗрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ "рдбреАрдк" рдмреАрдЯрд╛ рдХреЗ рдЪрд░рдг рдореЗрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ "рд▓рд╛рдЗрд╡" рдЕрд░реНрдерд╛рдд рд╣рд▓ рдХрд░рддрд╛ рд╣реВрдВ рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЛ рдХреЗрд╡рд▓ рддрдм рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдпрд╣ рд╣реЛрдиреЗ рд▓рдЧрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХ рдореЙрдбреНрдпреВрд▓рд░ рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдпрд╣ рдЕрдиреБрдореЗрдп рд╣реИ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред
рд╢рд╛рдпрдж рдпрд╣реА рд╕рдм рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрджреНрдпрдкрд┐ рдореИрдВрдиреЗ рдХреЗрд╡рд▓ Node.JS рдХреЗ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реБрдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдФрд░ рднреА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рд╣реИрдВ) рдЖрдк рд╕рднреА рдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж)
рдкреБрдирд╢реНрдЪ рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдВрдХ рдореЗрдВ рд░реБрдЪрд┐ рд╣реИ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИред