Mongoose: рдореЙрдбрд▓ рдЕрдкрдбреЗрдЯ рд╡рд┐рдзрд┐ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рд╕рдореНрдорд╛рди рдирд╣реАрдВ рдХрд░рддреА рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 24 рдЕрдкреНрд░реИрд▓ 2012  ┬╖  59рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Automattic/mongoose

рдореИрдВ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рд╕реНрдХреАрдорд╛ рдмрд╛рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдкрд░ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рд╡рд┐рдзрд┐

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдПрдирдо рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдХреАрдорд╛ рд╣реИ, рддреЛ рдЕрджреНрдпрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдВ рдПрдирдо рдмрд╛рдзрд╛ рдХреЗ рдмрд╛рд╣рд░ рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реВрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕реЗрдЯ рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдЕрджреНрдпрддрди рдорд╛рди рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрдирд╛ рдерд╛ред

рдореИрдВ рдкрд╣рд▓реА рддреНрд░реБрдЯрд┐ рдкрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдХрд▓реНрдк рд╕реБрдЭрд╛рддрд╛ рд╣реВрдВ рдпрд╛ рдирд╣реАрдВред

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

+1

рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирдЬрд╛рди рд╣реИ рдХрд┐ рдЕрджреНрдпрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реЛрдЧрд╛: рдбрд┐рдлрд╝реЙрд▓реНрдЯ, рд╕реЗрдЯрд░реНрд╕, рд╕рддреНрдпрд╛рдкрди рдФрд░ рдПрдирдоред рдпрджрд┐ рдХреЛрд░ рдСрдкрд░реЗрд╢рдВрд╕ рдЗрд╕рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕реНрдХреАрдорд╛ рдХрд╛ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред

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

рдЖрдк strict рд╕реНрдХреАрдорд╛ рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рднреА рдЕрдорд╛рдиреНрдп рд╕реНрдХреАрдорд╛ рдкрде рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджреЗрдЧреА рдФрд░ рдмрд╛рдХреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рджреЗрдЧреАред рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдлреЗрдВрдХреА рдЬрд╛рддреА рд╣реИред

рдирдИ рд╕реНрдХреАрдорд╛ ({..}, {рд╕рдЦреНрдд: рд╕рдЪ})

рдПрдХ рд╕рдорд╛рди рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╣реИ рдЬреЛ рд╡рд┐рд▓рдп рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рд╕реНрдХреАрдорд╛ рдореЗрдВ рдореМрдЬреВрдж рдкрдереЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рдлреЗрдВрдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ model.update рджреМрд░рд╛рди рдирд╣реАрдВ рдлреЗрдВрдХрддрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рдЙрдкрд░реЛрдХреНрдд рдкреАрдЖрд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП рдФрд░ рдЧрд▓рддреА рдХреЛ рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдкрд╛рд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПред

рд╣рд╛рдп рдлрд┐рд░ рд╕реЗ, рдЖрдкрдХреЗ рддреНрд╡рд░рд┐рдд рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВ рдЕрдорд╛рдиреНрдп рд░рд╛рд╕реНрддреЛрдВ рдХреА рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ рдмрд▓реНрдХрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрде рдХреЗ рднреАрддрд░ рдмрд╛рдзрд╛ рдбрд╛рд▓рдиреЗ рдХреА рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рдерд╛ред

рдпрд╣ рдЙрджрд╛рд╣рд░рдг рд▓реЗрдВ

рд╡рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ = рдирдИ рд╕реНрдХреАрдорд╛ ({
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо: {
рдЯрд╛рдЗрдк рдХрд░реЗрдВ: рд╕реНрдЯреНрд░рд┐рдВрдЧ,
рд▓реЛрдЕрд░рдХреЗрд╕: рд╕рдЪ,
рдЯреНрд░рд┐рдо: рд╕рдЪ,
рдЕрджреНрд╡рд┐рддреАрдп: рд╕рдЪ
},
рдирд╛рдо: {
рдЯрд╛рдЗрдк рдХрд░реЗрдВ: рд╕реНрдЯреНрд░рд┐рдВрдЧ,
рдЯреНрд░рд┐рдо: рд╕рдЪ,
рдЖрд╡рд╢реНрдпрдХ: рд╕рдЪ,
рдЕрджреНрд╡рд┐рддреАрдп: рдЭреВрдард╛,
рд╕реВрдЪрдХрд╛рдВрдХ: рд╕рдЪ
},
рдкрд╛рд╕рд╡рд░реНрдб: {
рдЯрд╛рдЗрдк рдХрд░реЗрдВ: рд╕реНрдЯреНрд░рд┐рдВрдЧ,
рдЖрд╡рд╢реНрдпрдХ: рд╕рдЪ,
рдЪреБрдиреЗрдВ: рдЭреВрдард╛,
рд╕реЗрдЯ рдХрд░реЗрдВ: рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВ
},
рднреВрдорд┐рдХрд╛: {
рдЯрд╛рдЗрдк рдХрд░реЗрдВ: рд╕реНрдЯреНрд░рд┐рдВрдЧ,
"рдбрд┐рдлреЙрд▓реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛',
"рдПрдирдо": ['рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛', 'рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ', 'рд░реВрдЯ']
},
рдмрдирд╛рдпрд╛ рдерд╛: {
рдкреНрд░рдХрд╛рд░: рддрд┐рдерд┐,
"рдбрд┐рдлрд╝реЙрд▓реНрдЯ": рджрд┐рдирд╛рдВрдХ.рдЕрдм
}
}, {рд╕рдЦреНрдд: рд╕рдЪ});

users.update({"username" : "test"}, {"role" : "thisShowldFail"}, function (err, val){
...
});

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕рдЦреНрдд рд╕реНрдХреАрдорд╛ рд╡рд┐рдХрд▓реНрдк рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдкрд░ рднреА рдЕрдм "рдкрд░реАрдХреНрд╖рдг" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рднреВрдорд┐рдХрд╛ "thisShowldFail" рд╣реИред
рд╕рдореНрдорд╛рди рдПрдирдо, рдФрд░ рдЕрдиреНрдп рд╕рдорд╛рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдЖрдк рд╕рд╣реА рд╣реИрдВ, рдЗрд╕реЗ рдПрдирдореЛрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╣реАрдВ рдЯрд┐рдХрдЯ рд╣реИред

+1, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рд░рдг #update рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ .update рдЙрди рд╕рднреА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рдмрдирд╛ рджреЗ рдЬреЛ рдПрдХ рдирдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ + .save рдХрд░реЗрдЧрд╛?

  • рдЪреВрдХ
  • рдмреИрдард╛рдиреЗрд╡рд╛рд▓рд╛
  • рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрди
  • рдПрдиреНрдпреВрдо

рдпрджрд┐ рдЕрдкрд░рд░реНрдЯ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рднреА

  • рдЖрд╡рд╢реНрдпрдХ

рдлрд┐рд▓рд╣рд╛рд▓ рдирд╣реАрдВ

рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ/рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИ ...? :)

рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕рдВрдмрдВрдзрд┐рдд #472

+1

рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирдЬрд╛рди рд╣реИ рдХрд┐ рдЕрджреНрдпрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реЛрдЧрд╛: рдбрд┐рдлрд╝реЙрд▓реНрдЯ, рд╕реЗрдЯрд░реНрд╕, рд╕рддреНрдпрд╛рдкрди рдФрд░ рдПрдирдоред рдпрджрд┐ рдХреЛрд░ рдСрдкрд░реЗрд╢рдВрд╕ рдЗрд╕рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕реНрдХреАрдорд╛ рдХрд╛ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред

+1

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

рдпрд╣ рдореИрдВ рдХреВрдж рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЧреЛрддрд╛ рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВред
рд▓рдХреНрд╖реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ:

  • рдЪреВрдХ
  • рдмреИрдард╛рдиреЗрд╡рд╛рд▓рд╛
  • рд╕рддреНрдпрд╛рдкрди
  • рдПрдиреНрдпреВрдо
  • рдЖрд╡рд╢реНрдпрдХ

рдореБрдЭреЗ рдпрдХреАрди рднреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдлрд▓ рд╣реЛрдКрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдЖрдЬрдорд╛рдКрдВрдЧрд╛ред рдореИрдВ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛ред

рдореБрдЭреЗ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ рджреЗрдВ!

рдорд░реНрдХ.

+1

+1

рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рдЕрдЧрд░ .update рд╕рдорд░реНрдерд┐рдд рд╕рддреНрдпрд╛рдкрдиред

рдЯрдХреНрдХрд░ +1

рдКрдмрдбрд╝-рдЦрд╛рдмрдбрд╝ рдЯрдХреНрдХрд░ +1

рдХреГрдкрдпрд╛ рдЕрджреНрдпрддрди рдкрд░ рд╕рддреНрдпрд╛рдкрди рдЬреЛрдбрд╝реЗрдВ!

+1

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: -2 рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдиреЗрд╡рд▓реЗ рдХреЛ рд╕рддреНрдпрд╛рдкрди рдкреНрд░рднрд╛рд░реА рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП .. рдпрджрд┐ рдЖрдк рд╕рддреНрдпрд╛рдкрди рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ рдХрд┐ JSON рд╕реНрдХреАрдорд╛ рд╕рддреНрдпрд╛рдкрди рдХреА рдЕрдиреБрдорддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

@thalesfsp рд╣рд╛рдБред рдЕрддреАрдд рдореЗрдВ рдЗрд╕рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рдпрдо рдмрд╣реБрдд рд╣реА рднрджреНрджреЗ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдореГрддрд┐ рдореЗрдВ рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рдФрд░ рдХрдИ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрд╕рдВрдЧрдд рдФрд░ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

рдУрдкрди рд╕реЛрд░реНрд╕ рдХреА рд╕реБрдВрджрд░рддрд╛: рдпрджрд┐ рдЖрдк рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рд╕рд┐рдВрдЧ рдЯреЗрд╕реНрдЯ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЗ рд╕рд╛рде рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рдмрдорд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рд╛рдмрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдмрд╣реБрдд рд╣реА рдЧрдВрднреАрд░ рд╕реАрдорд╛ред рдПрдХ рдкреИрдЪ рдХрд╛ рдкреАрдЫрд╛ рдХрд░рддреЗ рд╣реБрдП, рдХреНрдпрд╛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕реАрдзреЗ рд╕реНрдХреАрдорд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдХреНрд░реЙрд▓ рдХрд░рдирд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реЛрдЧрд╛? рдореИрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛рдУрдВ рдФрд░ рдЕрджреНрдпрддрди рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдПрдирдо рдирд┐рдпрдореЛрдВ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реВрдВред рдЬрдм рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЕрдиреНрдп рд╕реНрдХреАрдорд╛ рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЗрддрдирд╛ рд╕рд░рд▓реАрдХрд░рдг рдХреЗрд╡рд▓ рдПрдирдо рдФрд░ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдФрд░ рдЕрджреНрдпрддрди рдХреЗ рджреМрд░рд╛рди рдХрд┐рд╕реА рднреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ?

+1 рдЯрдХреНрдХрд░, рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЛрдЧреА - рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рдореИрдВ рд╕реНрдХреАрдорд╛ рд╕реЗ рд╕рдореНрдорд╛рдирд┐рдд рдорд┐рдирдЯ/рдЕрдзрд┐рдХрддрдо рдЖрджрд┐ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рдЕрдиреНрдпрдерд╛ рдореИрдВ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рддрд░реНрдХ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдХреБрдЫ рдиреЗрд╡рд▓рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ

рдРрд╕рд╛ рд╣реЛрддреЗ рд╣реБрдП рджреЗрдЦрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдлрд┐рд▓рд╣рд╛рд▓ рдореЗрд░рд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдвреВрдВрдв рд░рд╣рд╛ рд╣реИ, рдлрд╝реАрд▓реНрдб рдмрджрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд╕рд╣реЗрдЬ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рд╕рддреНрдпрд╛рдкрди рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИред рдбреЙрдХреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░:

Tank.findById(id, function (err, tank) {
  tank.size = 'large';
  tank.save(function (err) {
   // Document updated, do something with it
  });
});

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ update рдХрдорд╛рдВрдб рд╕реАрдзреЗ рдореЛрдВрдЧреЛ рдХреЛ рд╕реМрдВрдкрддрд╛ рд╣реИ, рдФрд░ рдкреВрд░рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдорд╛рдиреНрдп рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рдореЗрдВ рдирд╣реАрдВ рдмреИрдарддрд╛ рд╣реИред рддреЛ @BrianHoldsworth рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд╕реНрдХреАрдорд╛ рдЪрд▓ рд░рд╣реЗ рд╕рддреНрдпрд╛рдкрди рдХреЛ рдХреЗрд╡рд▓ рдЙрди рдлрд╝реАрд▓реНрдб рдХреЗ рд╡рд┐рд░реБрджреНрдз рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред

@aheckmann рдХреНрдпрд╛ рдЖрдк рд╣рдореЗрдВ рдкрд┐рдЫрд▓реЗ (рдЕрд╕рдлрд▓) рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рдпрд╛рд╕реЛрдВ рдкрд░ рдХреБрдЫ рдФрд░ рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬреЛ рдХреЛрдИ рднреА рдЗрд╕ рдкреИрдЪ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдлрд┐рд░ рд╕реЗ рд╡рд╣реА рдЧрд▓рддрд┐рдпрд╛рдБ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?

рдореИрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛рдУрдВ рдФрд░ рдЕрджреНрдпрддрди рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдПрдирдо рдирд┐рдпрдореЛрдВ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реВрдВред рдЬрдм рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЕрдиреНрдп рд╕реНрдХреАрдорд╛ рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЗрддрдирд╛ рд╕рд░рд▓реАрдХрд░рдг рдХреЗрд╡рд▓ рдПрдирдо рдФрд░ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдФрд░ рдЕрджреНрдпрддрди рдХреЗ рджреМрд░рд╛рди рдХрд┐рд╕реА рднреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ?

@BrianHoldsworth рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ required: true рд╕рддреНрдпрд╛рдкрди рдмрд╛рдзрд╛ рд╡рд╛рд▓реЗ рдлрд╝реАрд▓реНрдб рдХреЛ рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рд╕рддреНрдпрд╛рдкрди рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рднреА рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред рд╢рд╛рдпрдж рдПрдХ рдкреНрд▓рдЧ-рдЗрди .update() рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдФрд░ рд╕рддреНрдпрд╛рдкрди рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдЗрд╕ рддрд░рд╣, рдЖрдВрд╢рд┐рдХ рд╕рдорд╛рдзрд╛рди рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдпрджрд┐ рдпрд╣ рдореВрд▓ рдореЗрдВ рд╣реЛрддрд╛, рддреЛ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛ рдХреА рдЬрд╛рддреА рдереА рдХрд┐ рдпрд╣ рд╣рд░ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рддреНрдпрд╛рдкрди рдХреЛ рд╕рдВрднрд╛рд▓реЗрдЧрд╛ рдФрд░ 100% рдордЬрдмреВрдд рд╣реЛрдЧрд╛ред

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

+1 рдЗрд╕реЗ рдЯрдХреНрдХрд░ рджреЗрдВред

рдмреНрд░рд╛рдпрди рдХрд╛ рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рд╕реБрдВрджрд░ рд▓рдЧрддрд╛ рд╣реИред рдкреИрдЪ рдмреАрдЯрд╛ рд╣рд┐рдЯ рд╣реЛрдиреЗ рдкрд░ рдЕрдзрд┐рд╕реВрдЪрд┐рдд рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

+1

рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ +1

+1

+1

+1

+1

3.9.3 рдореЗрдВ update() рдореЗрдВ 2 рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдХрд▓реНрдк рд╣реЛрдВрдЧреЗ, setDefaultsOnInsert рдФрд░ runValidators , рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ рдФрд░ рдЖрдкрдХреА рдХреНрд╡реЗрд░реА рдкрд░ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдЪрд▓рд╛рдПрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рджреЗрдЦреЗрдВ, рдЕрднреА рддрдХ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд╣реАрдВ :(

рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж - рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдлрд┐рдХреНрд╕ рд╣реИ!

@ vkarpov15 рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ findOneAndUpdate рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдерд╛ред рдкреАрдЖрд░ #2393 рджреЗрдЦреЗрдВред

рдирдорд╕реНрддреЗ, рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрджреНрдпрддрди рдкрд░ рд╕рддреНрдпрд╛рдкрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг 3.9 рдХрдм рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?

рдзрдиреНрдпрд╡рд╛рдж

@AlexandreAWE рдЕрдЪреНрдЫрд╛ рд╕рд╡рд╛рд▓ рд╣реИред рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ 4.0 рдкрд░ рдЪреАрдЬреЛрдВ рдХреЛ рд▓рдкреЗрдЯ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ 3.9.x рд╢рд╛рдЦрд╛ рдХрд╛ рдмреАрдЯрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрднреА рдпрд╣ "рдпрд╣ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛"ред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреНрд░рд┐рд╕рдорд╕ рд╕реЗ рдкрд╣рд▓реЗ рдЖрд░рд╕реА рдирд┐рдХрд▓ рдЬрд╛рдПрдЧреАред

@ vkarpov15 рдпрд╣ 3.9.x рд╕реНрдерд┐рд░ рдкрд░ рдХреИрд╕реЗ рдЖ рд░рд╣рд╛ рд╣реИ? рдореЗрд░реЗ рд╡рд░реНрддрдорд╛рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рдЦреЛрдЬрдиреЗ рдФрд░ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рдмрджрд▓реЗ рдЕрджреНрдпрддрди рдкрд░ рд╕рддреНрдпрд╛рдкрди рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

@andrewholsted рдореЛрдВрдЧреЛрдбрдм рдбреНрд░рд╛рдЗрд╡рд░ 2.0 рдФрд░ рдореЛрдВрдЧреЛрдбрдм рд╕рд░реНрд╡рд░ 2.8 рдкрд░ рд╕реНрдерд┐рд░ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ - рдпрд╣ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рдорд╣реАрдиреЗ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЛрдВрдЧреЛрдбрдм рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдирд╡реАрдирддрдо рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдП рдмрд┐рдирд╛ 4.0 рдЬрд╣рд╛рдЬ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдмреНрд▓реЙрдЧ рджреЗрдЦреЗрдВред

рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЧреВрдВрдЧрд╛ рдкреНрд░рд╢реНрди, рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛ рдХреЛ рдЕрджреНрдпрддрди рдХреНрдпреЛрдВ рди рдХрд░реЗрдВ рдФрд░ рдорд╛рдиреНрдп рдХрд░реЗрдВ рдХрд┐ рдореЛрдВрдЧреЛрдбрдм рдореЗрдВ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдХреАрдорд╛ рдХреЗ рд╡рд┐рд░реБрджреНрдз?

рд╕рд╛рде рд╣реА, +1

рдорд╛рд░реНрдХ рдПрдВрдб рд╡реЗрдЯ

3.9 рд╕реНрдерд┐рд░ рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ :)

рдХреНрдпрд╛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрднреА рддрдХ рд╣реИ? 3.9 рдХрд╛ рдмреЗрд╕рдмреНрд░реА рд╕реЗ рдЗрдВрддрдЬрд╛рд░ рд╣реИ.. рдХреНрдпрд╛ рдпрд╣ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛?

рдЕрд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк npm install mongoose@unstable рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред 4.0 рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдИрдЯреАрдП 25 рдорд╛рд░реНрдЪ рд╣реИ - рдЗрд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рдореАрд▓ рдХрд╛

рдмрд╕ рдХрд▓ рд░рд╛рдд рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред рдЦреБрд╢реА рд╣реИ рдХрд┐ рдореИрдВ рдЕрдХреЗрд▓рд╛ рдирд╣реАрдВ рд╣реВрдБ! рдореИрдВ рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЗ рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реВрдВ, рдЖрдк рдЬреЛ рдХреБрдЫ рднреА рдХрд░рддреЗ рд╣реИрдВ рдЙрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

+1

рдкрддрд╛ рдирд╣реАрдВ рдХреНрдпреЛрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореИрдВ рдЕрднреА рднреА рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ findOneAndUpdate () рдХреЗ рд▓рд┐рдП рдПрдирдо рд╕рддреНрдпрд╛рдкрди рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд░рдирд╡реИрд▓рд┐рдбреЗрдЯрд░реНрд╕ рдХреЛ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рднреАред

@ m1cah рдХреГрдкрдпрд╛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░реЗрдВ рдЬреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рдФрд░ рд╡реЗ рдкрд╛рд╕ рд╣реЛ рдЧрдП рд╣реИрдВ ...

@ vkarpov15 рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЫреЛрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ: http://code.runnable.com/VYhGbVhereIYdbst/update-validation-enum-for-mongoose-and-databases

рдЦреИрд░ рдПрдХ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг рдиреЗрд╡рд▓рд╛ рдХреЗ рдкреНрд░рд╛рдЧреИрддрд┐рд╣рд╛рд╕рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ:

root<strong i="6">@runnable</strong>:~# head node_modules/mongoose/package.json                                                                                                                 
{                                                                                                                                                                         
  "name": "mongoose",                                                                                                                                                     
  "description": "Elegant MongoDB object modeling for Node.js",                                                                                                           
  "version": "3.6.14",                                                                                                                                                    
  "author": {                                                                                                                                                             
    "name": "Guillermo Rauch",                                                                                                                                            
    "email": "[email protected]"                                                                                                                                   
  },                                                                                                                                                                      
  "keywords": [                                                                                                                                                           
    "mongodb",  

4.x рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рдПрдирдо рдФрд░ findOneAndUpdate рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рдиреЗрд╡рд▓рд╛ 4.2.6 рдкрд░ рдпрд╣ рд╡рд┐рдлрд▓ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдореИрдВ рдПрдХ рдЦрд░рд╛рдм рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рд╕реНрдХреАрдорд╛:

var UserSchema = new Schema({
    first_name: {
        type: String,
        required: true,
    },
    last_name: {
        type: String,
        required: true,
    },
    email: {
        type: String,
        unique: true,
        required: true,
    },
    embededData: [{
        type: {
            type: String,
            enum: ['value1', 'value2', 'value3']
            required: true
        }
    }]
}, { strict: true });

FindOneAndUpdate рд╡рд┐рдзрд┐:

UserModel.findOneAndUpdate(
    {_id: uid}, 
    {$push: {embededData: data}}, 
    { runValidators: true }, function(err) {
});

рддрдм рдореИрдВ embededData.type = 'Panda'; рдзрдХреНрдХрд╛ рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ

рдЕрджреНрдпрддрди рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ #2933 рджреЗрдЦреЗрдВ - рдЕрджреНрдпрддрди рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ $push рдкрд░ рдирд╣реАрдВ рдЪрд▓рддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ $set рдФрд░ $unset рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ

+1

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ, рдпрд╣ рдЕрднреА рднреА рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рдПрдХ рд╕рд░рдгреА рд╡рд╛рд▓реЗ рдлрд╝реАрд▓реНрдб рдкрд░ рдПрдХ рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ:

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/myTestDB');

var db = mongoose.connection;

db.on('error', function (err) {
console.log('connection error', err);
});
db.once('open', function () {
console.log('connected.');
});

var Schema = mongoose.Schema;
var userSchema = new Schema({
  _id : String,
  name : {
    type: [String],
    validate: {
        validator: function (str) {
            return str.length > 1
        }
    },
  }
});


var User = mongoose.model('User', userSchema);

User.findOneAndUpdate({"name": ["John", "Doe"]}, { 
  $setOnInsert: {
    name: ["John"],
  },
}, { runValidators: true, upsert: true, new: true }, function (err, data) {
  if (err) {
    return console.log(err);
  } else {
    // console.log(data.validateSync())
    return console.log('Updated', data);
  }
});

рдЖрдкрдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ ["рдЬреЙрди"] рдХрд╛ name рдлрд╝реАрд▓реНрдб рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рднрд▓реЗ рд╣реА рдореИрдВрдиреЗ рд╢рд╛рдорд┐рд▓ рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ 1 рд╕реЗ рдХрдо рдпрд╛ рдЙрд╕рдХреЗ рдмрд░рд╛рдмрд░ рд▓рдВрдмрд╛рдИ рдХреЗ рдХрд┐рд╕реА рднреА рдирд╛рдо рд╕рд░рдгреА рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рд╕реНрд╡рдпрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рддрдереНрдп рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рд▓рд╛рдЗрди console.log(data.validateSync()) рдЕрд╕рдореНрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╕рддреНрдпрд╛рдкрди рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдЪрд┐рдд рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд▓реМрдЯрд╛рдПрдЧрд╛ред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рддреНрдпрд╛рдкрди findOneAndUpdate() рдХреЙрд▓ рдХреЗ рднреАрддрд░ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдореИрдВ runValidators=true рд╡рд┐рдХрд▓реНрдк рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реВрдВред

рдПрдХ рдмрдЧ рдХреА рддрд░рд╣ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ?

рд╣рд╛рдВ, рдЦреЛрд▓рд╛ рдЧрдпрд╛ https://github.com/Automattic/mongoose/issues/4039

рдзрдиреНрдпрд╡рд╛рдж

рдХреНрдпрд╛ рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдЙрдкрд▓рдмреНрдз рд╣реИ? @vkarpov15

@ Saravanan90 рдХреГрдкрдпрд╛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рд╛рд░реНрдердХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдмрдВрдж рдореБрджреНрджреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛ рдмрдВрдж рдХрд░реЗрдВред рдХреЛрдб рдирдореВрдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред

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

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

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

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

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

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

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