Mongoose: рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреБрдмрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 3 рдЕрдХреНрддреВре░ 2013  ┬╖  16рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Automattic/mongoose

рдореИрдВ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджреБрдмрд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рд╕реЗрд╡ рд░рд┐рдЯрд░реНрди рдХрд╛ рдХреЙрд▓рдмреИрдХ рднреА рдПрдХ рдиреЗрд╡рд▓рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИ, рди рдХрд┐ рдПрдХ рдЬреЗрдПрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕реЗ рдореИрдВ рд▓реАрди-рд▓рд╛рдЗрдХ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рджреБрдмрд▓рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ 'рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рднреНрд░рдо рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред

рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@imrefazekas , рд╕рд╣реЗрдЬреЗрдВ, рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, рдмрдирд╛рдПрдВ рдФрд░ рдирд┐рдХрд╛рд▓реЗрдВ "рдкреНрд░рд╢реНрди" рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡реЗ .lean() рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдЗрд╕ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд▓реЗрддреЗ рд╣реИрдВред
рдЖрдк рд╕реНрдХреАрдорд╛ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реМрдЯрд╛рдИ рдЧрдИ рд╡рд╕реНрддреБ рдкрд░ .toObject() рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

p.save(function (err, returned) {
  var leanObject = returned.toObject(); // has many options: http://mongoosejs.com/docs/api.html#document_Document-toObject
  assert.equal(leanObject.schema, null);
});

рд╕рднреА 16 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрджрд┐ рдЖрдк рд▓реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рд╢рд░реНрдд рдпрд╣ рд╣реИ рдХрд┐ рд▓реМрдЯреЗ рд╣реБрдП рдиреЗрд╡рд▓рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдмрдирд╛рдИ рдЬрд╛рдП

Person.findOne({
    _id: req.user.id
}, function(err, result) {
    if (err)
        return next(err);

    return (200, {
        id: result._id,
        spouse: result.spouse,
        children: result.children
    });
});

рд╢рд╛рдпрдж рдореЗрд░реА рдкреЛрд╕реНрдЯ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдереА, рдХреНрд╖рдорд╛ рдХрд░реЗрдВред
рдореИрдВ рджреБрдмрд▓рд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдмрдЪрд╛рдиреЗ рдкрд░ рднреАред
рд╕реНрдХреАрдорд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде "рд╕реЗрд╡" рдпрд╛ "рдЕрдкрдбреЗрдЯ" рд░рд┐рдЯрд░реНрди рдЬреИрд╕реЗ рд╕реЗрд╡ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдХреЙрд▓рдмреИрдХ рдФрд░ рдореИрдВ рд╢реБрджреНрдз рдЬреЗрдПрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд▓реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
рдпрд╣ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореИрдВ рд╕реЗрд╡ рдФрд░ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рднреА рд▓реАрди рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

@imrefazekas , рд╕рд╣реЗрдЬреЗрдВ, рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, рдмрдирд╛рдПрдВ рдФрд░ рдирд┐рдХрд╛рд▓реЗрдВ "рдкреНрд░рд╢реНрди" рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡реЗ .lean() рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдЗрд╕ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд▓реЗрддреЗ рд╣реИрдВред
рдЖрдк рд╕реНрдХреАрдорд╛ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реМрдЯрд╛рдИ рдЧрдИ рд╡рд╕реНрддреБ рдкрд░ .toObject() рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

p.save(function (err, returned) {
  var leanObject = returned.toObject(); // has many options: http://mongoosejs.com/docs/api.html#document_Document-toObject
  assert.equal(leanObject.schema, null);
});

hummity hums... save() рдореЗрдВ рдПрдХ рджреБрдмрд▓рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

рдЖрдк рдХреИрд╕реЗ рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╕реЗрд╡ () рдФрд░ рд▓реАрди рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ? AFAIK рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

рдЙрдореНрдо, рдХреБрдЫ рджрд┐рди рд╣реЛ рдЧрдП рд╣реИрдВ рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдРрд╕рд╛ рд╣реА рд╣реИ

user.save(function(err,user){

      //user is full-fledged etc
});

рджреБрдмрд▓реЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде, рдпрд╣ рд╣реЛрдЧрд╛/рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

user.save({
  lean:true
},function(err,user){

      //user is *not* full-fledged etc
});

рдпрд╣ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ?

@ORESoftware рдирд╣реАрдВ , рдХреНрдпреЛрдВрдХрд┐ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдореЗрдВ рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдареАрдХ рд╡рд╣реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИред рдиреЗрд╡рд▓рд╛ рдирдП рдЕрджреНрдпрддрди рдХрд┐рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдирд╣реАрдВ рдкреВрдЫрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,

user.save(function(err, _user){
  user === _user; // true
});

рдУрд╣ рдареАрдХ рд╣реИ рд╕рдордЭ рдЧрдпрд╛ :) рдореЗрд░рд╛ рдмреБрд░рд╛

рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП, @repack рджреНрд╡рд╛рд░рд╛ рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЕрднреА рднреА 2017 рдореЗрдВ рдПрдХ рдЖрдХрд░реНрд╖рдг рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

@peterpeterparker рдореИрдВ рдЕрд╕рд╣рдордд рд╣реВрдВ рдФрд░ рд╕реЛрдЪрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛ Mongoose рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмрдЬрд╛рдп рд╕рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрдЪрд╛рд▓рди рд╕реЗ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПред

@ рдПрд▓реЗрдХреНрд╕-рдбрд┐рдХреНрд╕рди рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ save рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП @refack рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЕрднреА рднреА 2017 рдореЗрдВ рдорд╛рдиреНрдп рдФрд░ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИ, рдХреБрдЫ рдФрд░ рдирд╣реАрдВ, рдХреБрдЫ рдХрдо рдирд╣реАрдВ;)

@peterpeterparker рдЖрдк рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВред рдорд╛рдлрд╝ рдХрд░рдирд╛ред рдЙрд╕реЗ рдЖрдкрдХреА рдУрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред

@ рдПрд▓реЗрдХреНрд╕-рдбрд┐рдХреНрд╕рди рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ

рдХреНрдпрд╛ рд╣рдореЗрдВ lean() рд╕рд╛рде Model.create() рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдХрднреА рдирд╣реАрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк lean() рд╕рд╛рде Model.create() рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ :p

рдорд┐рд▓ рдЧрдИ :)

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

ArThoX picture ArThoX  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

wlingke picture wlingke  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

gustavomanolo picture gustavomanolo  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

lukasz-zak picture lukasz-zak  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

rohan-paul picture rohan-paul  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ