рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдХрд┐рд╕реА рдмрдЧ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рдХреАрдбрд╝рд╛
рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?
Model.findByIdAndUpdate() рдореЛрдВрдЧреЛрдбрдм рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХрд░ рд░рд╣рд╛ рд╣реИ - рдЬрд┐рд╕рдиреЗ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИред рдвреВрдВрдвреЗрдВ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВред рдореЛрдВрдЧреЛрдбрдм рдЗрд╕рдХреЗ рдмрдЬрд╛рдп findOneAndUpdate, findOneAndReplace рдпрд╛ findOneAndDelete рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред
collection.ensureIndex рднреА рдмрд╣рд┐рд╖реНрдХреГрдд рд╣реИ - mongodb рдЗрд╕рдХреЗ рдмрдЬрд╛рдп createIndexes рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред
рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдПрдХ рдмрдЧ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо рдкреНрд░рджрд╛рди рдХрд░реЗрдВред
рдХрд┐рд╕реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП Model.findByIdAndUpdate / findOneAndUpdate рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЗрди рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рдХреЛрдИ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ!
рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ node.js, mongoose рдФрд░ MongoDB рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдВред
рдиреЛрдб v10.8.0
рдореЛрдВрдЧреЛрдбрдм v3.6.2
рдиреЗрд╡рд▓рд╛ v5.2.9
рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИред рдореБрдЭреЗ рдпрд╣ рднреА рдорд┐рд▓рддрд╛ рд╣реИ "рд╡рд┐рдХрд▓реНрдк рдЦреЛрдЬреЗрдВ [рдлрд╝реАрд▓реНрдб] рдмрд╣рд┐рд╖реНрдХреГрдд рд╣реИ рдФрд░ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред"
(node:13076) DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.
(node:13076) DeprecationWarning: collection.remove is deprecated. Use deleteOne, deleteMany, or bulkWrite instead.
(node:13076) DeprecationWarning: collection.find option [fields] is deprecated and will be removed in a later version.
(node:13076) DeprecationWarning: collection.update is deprecated. Use updateOne, updateMany, or bulkWrite instead.
рдпрд╣рд╛рдБ рдХреБрдЫ рдФрд░ рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓реЗ рд╣реИрдВ
#6165 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдФрд░ рд╕реАрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдкрд░ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдЖрдВрд╢рд┐рдХ рдмрд╣рд┐рд╖реНрдХрд░рдг рд╕рдВрджреЗрд╢ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк useFindAndModify
рдХреЛ рдЧрд▓рдд рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред IMO рдпрд╣ рдЕрдм рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
mongoose.set('useFindAndModify', false);
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдиреНрдп рдмрд╣рд┐рд╖реНрдХреГрдд рд╡рд┐рдзрд┐рдпреЛрдВ рдЬреИрд╕реЗ ensureIndex(es)
рдФрд░ update
рдХреЛ рдЕрднреА рднреА рдирдП рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЧрд▓рдд рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рдареАрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЕрдЧрд▓реЗ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╕рднреА рдкрджрд╛рд╡рдирдд рдкрджреНрдзрддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдФрд░ useFindAndModify
рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ?
рдзреНрдпрд╛рди рджреЗрдВ:
рдХреЗрд╡рд▓ MongoDB 3.2+ рд╕рдорд░реНрдерди FindOneAndUpdate рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреНрд╡реЗрд░реА рд▓реЗрдХрд┐рди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд [email protected]
рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрднреА рднреА 2.6 рдкрд░ рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП findAndModify рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ , рдЗрд╕рд▓рд┐рдП useFindAndModify
рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрд╕рддреНрдп рдмрдирд╛рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ MongoDB 3.0 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдирд╣реАрдВ рдЫреЛрдбрд╝реЗрдЧрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рдВрдЧрддрддрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрд▓реНрдж рд╣реА рдЯреВрдЯ рдЬрд╛рдПрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ [email protected]
(рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ) рд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдм рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрджреЗрд╢ рднреА рдлреЗрдВрдХ рджреЗрддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдиреЗрд╡рд▓рд╛ рдХреА рдЕрдЧрд▓реА рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬрд╝ (6.x) рдореЛрдВрдЧреЛрдбреАрдмреА 3.0 рд╕рдорд░реНрдерди рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ рд╕рднреА рдирдП рдПрдкреАрдЖрдИ рдХреЛ рдЕрдкрдирд╛рдПрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, MongoDB 3.0 рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдлрд░рд╡рд░реА, 2018 рдореЗрдВ рдЬреАрд╡рди рдХреЗ рдЕрдВрдд рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рд╣реИред
рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?
рддреЛ ... рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ? рдХреНрдпрд╛ рдЕрдЧрд▓реЗ рдиреЗрд╡рд▓рд╛ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдЬрд░реВрд░реА рд╣реИ?
@lpiVasquez рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ mongoose 5.x рд╕рдорд░реНрдерди MongoDB рд╕рд░реНрд╡рд░ 3.0 рдХрд╣рддрд╛ рд╣реИ ред
рдЕрднреА рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдирдП рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдПрдкреАрдЖрдИ рдЕрднреА рднреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЗрд╕реЗ рд╕рдВрднрд╛рд▓ рд░рд╣рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдмрд╛рд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдирд╛ рд╣реЛрдЧрд╛ред
рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдмрд▓реНрдХрд┐ рдЕрдЧрд▓реА рд░рд┐рд▓реАрдЬ 5.3 рдореЗрдВ рдореЛрдВрдЧреЛрдбреАрдмреА рд╕рд░реНрд╡рд░ 3.0 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЫреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред рдХрдо рд╕реЗ рдХрдо 5.2 рдореЗрдВ рдордд рддреЛрдбрд╝реЛред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмрд╕ рдореЗрд░реА рд░рд╛рдпред
@IpiVasquez
рдпрджрд┐ рджреНрд╡рд╛рд░рд╛,
рдпрд╣ рдХреНрдпреЛрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ?
рддреБрдореНрд╣рд╛рд░рд╛ рдорддрд▓рдм рд╣реИ,
рдореЛрдВрдЧреЛрдбрдм рдЗрди рдПрдкреАрдЖрдИ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рдХреНрдпреЛрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ?
рд╡рд┐рднрд┐рдиреНрди рдбреНрд░рд╛рдЗрд╡рд░ рдПрдкреАрдЖрдИ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╕рдВрдЧрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЛрдВрдЧреЛрдбрдм рдХреА рдПрдХ рдпреЛрдЬрдирд╛ рд╣реИред рдпрд╣ рдпрд╣рд╛рдВ рдореЛрдВрдЧреЛрдбрдм рдХреНрд░реВрдб рд╕реНрдкреЗрдХ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ
рдХреНрдпрд╛ рдЕрдЧрд▓реЗ рдиреЗрд╡рд▓рд╛ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рдЬрд░реВрд░реА рд╣реИ?
рдЕрдЧрд░ рд╣рдо рд╕реЗрд╡рд░ рд╕реНрдкреЗрдХ рд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреБрдЫ рднреА рдЬреЛ рдПрдкреАрдЖрдИ рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ рд╡рд╣ рдПрдХ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ @6.0.0
, рдЬреИрд╕реЗ рдХрд┐ @5.3.0
рдпрд╛ рдкреИрдЪ рд░рд┐рд▓реАрдЬ рдЬреИрд╕реЗ @5.2.10
рдХреЗ рд╡рд┐рдкрд░реАрдд @6.0.0 @5.2.10
ред
рдореВрд▓ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдЙрдирд╕реЗ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ v4 рддрдХ рдЗрди рддрд░реАрдХреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддрд╛ред
рдЗрд╕ рдмреАрдЪ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЕрдм рддрдХ рджреЗрдЦреА рдЧрдИ рдЕрдзрд┐рдХрд╛рдВрд╢ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдмрд╣рд┐рд╖реНрдХреГрдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рди рдХрд░рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рд▓реИрдВрдб рдореЗрдВ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрддрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╡реИрд╕реЗ рднреА @6.0.0
рдиреЗрд╡рд▓рд╛ рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╛рдж рдХреЗ рдмрдЬрд╛рдп рдЬрд▓реНрдж рд╣реА рдиреЗрд╡рд▓реЗ рдореЗрдВ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП 2 рдореБрдЦреНрдп рдореБрджреНрджреЗ рдХреНрд╡реЗрд░реА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ fields
projections
рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдХрдо рд╕реЗ рдХрдо рд╕рд░реНрд╡рд░ рд╕рдВрд╕реНрдХрд░рдг 3.0.15 рдкрд░ рд╡рд╛рдкрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ useFindAndModify
рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдЬреИрд╕рд╛ рдХрд┐ @Fonger рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдПрдХ рдкрд░рд┐рд╢рд┐рд╖реНрдЯ рдХреЗ рд╕рд╛рде:
рдЬрдм рдЖрдк 3.2 рд╕реЗ рдкрд╣рд▓реЗ рдХреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдореВрд▓ рдбреНрд░рд╛рдЗрд╡рд░ рдореЗрдВ findOneAndUpdate рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП findAndModify рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ (рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдмрд┐рдирд╛), рдЗрд╕рд▓рд┐рдП findOneAndUpdate
рдиреЗрд╡рд▓рд╛ рдореЗрдВ рдЕрднреА рднреА mongodb рдкреНрд░реА 3.2 рдФрд░ useFindAndModify: false
рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
#!/usr/bin/env node
'use strict';
const mongoose = require('mongoose');
mongoose.set('useFindAndModify', false);
const url = 'mongodb://localhost:27017/test';
const opts = { useNewUrlParser: true };
mongoose.connect(url, opts);
const conn = mongoose.connection;
const Schema = mongoose.Schema;
const schema = new Schema({
name: String
});
const Test = mongoose.model('test', schema);
async function run() {
await conn.dropDatabase();
let admin = conn.db.admin();
let { version } = await admin.serverInfo();
console.log(`mongodb: ${version}`);
console.log(`mongoose: ${mongoose.version}`);
let cond = {};
let update = { name: 'Sarah' };
let opts = {
upsert: true,
new: true
};
let sarah = await Test.findOneAndUpdate(cond, update, opts);
console.log(sarah);
return conn.close();
}
run();
issues: ./6880.js
mongodb: 3.0.15
mongoose: 5.2.9
{ _id: 5b779ca8d1326ce227b6869f, __v: 0, name: 'Sarah' }
issues:
рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореВрд▓ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рд╕рд╛рде рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
#!/usr/bin/env node
'use strict';
const { MongoClient, Logger } = require('mongodb');
const uri = 'mongodb://localhost:27017/test';
const opts = {
useNewUrlParser: true
};
async function run() {
const client = new MongoClient(uri, opts);
await client.connect();
const db = client.db('gh-6881');
await db.dropDatabase().catch(handleError);
Logger.setLevel('debug');
let res = await db
.collection('tests')
.findOneAndUpdate({}, { $set: { name: 'michael' } }, { upsert: true })
.catch(handleError);
Logger.setLevel('error');
console.log(res);
let doc = await db
.collection('tests')
.findOne({})
.catch(handleError);
console.log(doc);
process.exit(0);
}
run();
function handleError(e) {
return console.error(e.message);
}
...
message: 'executing command [{"ns":"gh-6881.$cmd","cmd":{"findAndModify":"tests","query":{},"new":false,"remove":false,"upsert":true,"update":{"$set":{"name":"michael"}}},"options":{}}] against localhost:27017',
...
{ value: null,
lastErrorObject:
{ updatedExisting: false,
n: 1,
upserted: 5b77a23cd1326ce227b686a1 },
ok: 1 }
{ _id: 5b77a23cd1326ce227b686a1, name: 'michael' }
рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЖрд╡реЗрджрди рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдореБрдЭреЗ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдорд┐рд▓реА:
(node:9856) DeprecationWarning: collection.findAndModify is deprecated. Use findOneAndUpdate, findOneAndReplace or findOneAndDelete instead.
(node:9856) DeprecationWarning: collection.find option [fields] is deprecated and will be removed in a later version.
(node:9856) DeprecationWarning: collection.find option [fields] is deprecated and will be removed in a later version.
рдпрджрд┐ рдЖрдкрдХреЛ _рдЕрд╕реНрдерд╛рдпреА_ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдХрд╖реНрдЯрдкреНрд░рдж рд▓рдЧрддреА рд╣реИ, рддреЛ рдЖрдк рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП --no-deprecation
рдХреЗ рд╕рд╛рде cli рдореЗрдВ node.js рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП _not рдЕрдиреБрд╢рдВрд╕рд┐рдд_ рдирд╣реАрдВ рд╣реИред
рдореЗрд░реЗ рд╕рд╛рде:
(node:1) DeprecationWarning: collection.findAndModify is deprecated. Use findOneAndUpdate, findOneAndReplace or findOneAndDelete instead.
(node:1) DeprecationWarning: collection.remove is deprecated. Use deleteOne, deleteMany, or bulkWrite instead.
(node:1) DeprecationWarning: collection.update is deprecated. Use updateOne, updateMany, or bulkWrite instead.
(node:1) DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.
(node:1) DeprecationWarning: collection.find option [fields] is deprecated and will be removed in a later version.
(node:1) DeprecationWarning: collection.find option [fields] is deprecated and will be removed in a later version.
рдкреНрдпрд╛рд░ package-lock.json рдкрд╣рд▓реЗ рд╕реЗ рдХрд╣реАрдВ рдЬреНрдпрд╛рджрд╛...
рдЗрди рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ:
1) рдкреБрди: findOneAndUpdate()
рдФрд░ findAndModify()
рдмрд╣рд┐рд╖реНрдХрд░рдг, mongoose.set('useFindAndModify', false);
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
2) рдкреБрди: remove()
рдмрд╣рд┐рд╖реНрдХрд░рдг, deleteOne()
рдпрд╛ deleteMany()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
3) рдкреБрди: update()
рдкрджрд╛рд╡рдирддрд┐, updateMany()
. рд╕реЗ рдмрджрд▓реЗрдВ
рд╣рдо рдЗрди рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЬреЛрдбрд╝реЗрдВрдЧреЗ, рдФрд░ рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рдиреЗрд╡рд▓рд╛ рдЗрди рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдХрд╛рд░рдг рди рдмрдиреЗред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд╕рднреА рдкрджрд╛рд╡рдирдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдФрд░ рдЕрдЧрд▓реЗ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ рдореЗрдВ useFindAndModify рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ?
рдореИрдВ рдЗрд╕рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд░рд╣реВрдВрдЧрд╛
рдХреНрдпрд╛ рдиреЗрд╡рд▓реЗ рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирдП рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реИ, deleteOne()
, deleteMany()
, updateMany()
рдЖрджрд┐?
+1
рдПрдХ рд╣реА рдЪреЗрддрд╛рд╡рдиреАред рд╣рдореЗрдВ рдирдП рдбреНрд░рд╛рдЗрд╡рд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рддреЛ рдЬреИрд╕реЗ, рдЕрднреА рд╣рдореЗрдВ рдЙрди рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдирдЬрд╝рд░рдЕрдВрджрд╛рдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛? рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореИрдВ рдПрдкреАрдЖрдИ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рдореБрдЭреЗ рдбреАрдмреА рд╕реЗ рд╕рдмрдХреБрдЫ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдФрд░ рдЬрдм рднреА рдореИрдВ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВред рдвреВрдВрдвреЗрдВ ()ред рддрдм ()ред .... рдЖрджрд┐ рдпрд╣ рдореБрдЭреЗ рдПрдХ рд╣реА рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реИред рдореИрдВ рдЙрд╕ рдЦреЛрдЬ () рд╡рд┐рдзрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рд╕реЗ рдкрд░реЗрд╢рд╛рди рд╣реИрдВ, рддреЛ рдЖрдк рд╢рд╛рдпрдж рдиреЛрдб рдореЗрдВ рдмрд╣рд┐рд╖реНрдХрд░рдг рдиреЛрдЯрд┐рд╕ рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрдкрд░реЛрдХреНрдд рдлреЛрдВрдЧрд░ рдХреА рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВ), рдпрд╛ рдЖрдк рдореЛрдВрдЧреЛрд╕ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯ рд╕рдХрддреЗ рд╣реИрдВред
рддреЛ рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
рд╣рд░ рдмрд╛рд░ рдЬрдм рдореИрдВ рдПрдХ рдЦреЛрдЬ рдХреНрд╡реЗрд░реА рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИред рдиреЗрд╡рд▓рд╛ рдЯреАрдо рд╕реЗ рдЕрдЧрд▓реЗ рдЕрджреНрдпрддрди рдХреЗ рдмрд╛рдж рддрдХ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред
(рдиреЛрдб: 15500) рдкрджрд╛рд╡рдирдд рдЪреЗрддрд╛рд╡рдиреА: рд╕рдВрдЧреНрд░рд╣.рдЦреЛрдЬ рд╡рд┐рдХрд▓реНрдк [рдлрд╝реАрд▓реНрдб] рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
fields
рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди 5.2.10 рдореЗрдВ рд╣реЛрдЧрд╛, рдЖрдк рдЗрд╕реЗ рдЕрдм рдФрд░ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗред рдЕрдиреНрдп рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рджрд┐рдП рдЧрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ: https://github.com/Automattic/mongoose/issues/6922#issue -354147871
рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж https://mongoosejs.com/docs/deprecations.html
рдкреБрди: findOneAndUpdate()
рдФрд░ findAndModify()
рдкрджрд╛рд╡рдирддрд┐, рдПрдХрдорд╛рддреНрд░ рд╡рд░реНрддрдорд╛рди ( 5.2.17
) рд╕рдорд╛рдзрд╛рди рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИ:
mongoose.set('useFindAndModify', false);
рдХреНрдпрд╛ рдпрд╣ рд╕рдЪ рд╣реИ?
рдореИрдВ Model.findByIdAndUpdate()
рдФрд░ Model.findOneAndUpdate()
. рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ mongoose рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд mongo db рдбреНрд░рд╛рдЗрд╡рд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░/рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреНрдпрд╛ рдореИрдВ рд╕рд╣реА рд╣реЛрдЧрд╛?
+1 рдореЗрд░реЗ рдкрд╛рд╕ Model.findByIdAndUpdate() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдиреА рд╣реИ;
рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
рдЗрд╕ рдкрд░ рдХреЛрдИ рднреА рд╕рдорд╛рдЪрд╛рд░ ?
@gianpaj рд╣рд╛рдБ mongoose.set('useFindAndModify', false)
findAndModify рдкрджрд╛рд╡рдирддрд┐ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди рд╣реИред рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ collection.findAndModify()
рдкрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреЙрд▓ [email protected] рдореЗрдВ рдЪрд▓реА рдЬрд╛рдПрдЧреАред @ vkarpov15 рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд╣реИ? рдпрд╛ рдПрдХ рд╕рдордп рд╕реАрдорд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдирд╛ рдмрд╣реБрдд рдЬрд▓реНрджреА рд╣реИ?
рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ findOneAndUpdate
рдкрд░ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ @daniyalawan рдпрд╣рд╛рдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВ 'useFindAndModify' рд╡рд┐рдХрд▓реНрдк рдЖрдк рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ (рдпрд╣ findByIdAndUpdate рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ findOneAndUpdate рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ)ред
@Sastidar [email protected] рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ? рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рд╕рднреА рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
@lineus @gianpaj рд╣рд╛рдБ, Mongoose 6.0.0 рдХреЗ рд╕рд╛рде useFindAndModify рд╡рд┐рдХрд▓реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧреАред рд╣рдо рдиреЗрд╡рд▓рд╛ 6 рдХреЛ рдХрдм рд░рд┐рд▓реАрдЬрд╝ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рдХреА рдХреЛрдИ рд╕рдордп-рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИред
рдкрджрд╛рд╡рдирддрд┐ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ - рдХреНрдпрд╛ рдиреЗрд╡рд▓рд╛ findByIdAndUpdate
рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЪрд░рдгрдмрджреНрдз рддрд░реАрдХреЗ рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдЧрд╛ рдпрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд findAndModify
рдХреЛ рдореЗрд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд┐рдП рдмрд┐рдирд╛ рдЪрд░рдгрдмрджреНрдз рддрд░реАрдХреЗ рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
рдореИрдВ рдореВрд▓ рд░реВрдк рд╕реЗ рдкреВрдЫ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмрдбрд╝рд╛ рдХреЛрдбрдмреЗрд╕ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореИрдВ рдЕрдкрдиреЗ рд╕рднреА findByIdAndUpdate
рдХреЛ findOneAndUpdate
рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реВрдВред
@gianpaj рд╣рд╛рдБ
mongoose.set('useFindAndModify', false)
findAndModify рдкрджрд╛рд╡рдирддрд┐ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди рд╣реИред рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐collection.findAndModify()
рдкрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреЙрд▓ [email protected] рдореЗрдВ рдЪрд▓реА рдЬрд╛рдПрдЧреАред @ vkarpov15 рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд╣реИ? рдпрд╛ рдПрдХ рд╕рдордп рд╕реАрдорд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдирд╛ рдмрд╣реБрдд рдЬрд▓реНрджреА рд╣реИ?рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ
findOneAndUpdate
рдкрд░ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ @daniyalawan рдпрд╣рд╛рдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВ 'useFindAndModify' рд╡рд┐рдХрд▓реНрдк рдЖрдк рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ (рдпрд╣ findByIdAndUpdate рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ findOneAndUpdate рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ)ред@Sastidar [email protected] рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ? рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рд╕рднреА рдмрд╣рд┐рд╖реНрдХрд░рдг рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рдЕрдЧрд░ рдореИрдВ mongoose.set('useFindAndModify', false)
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ {new: true}
рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдХреЛрдИ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк?
@anks333 рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ { new: true }
рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
#!/usr/bin/env node
'use strict';
const assert = require('assert');
const mongoose = require('mongoose');
mongoose.set('useFindAndModify', false);
const { Schema, connection} = mongoose;
const DB = '6880';
const URI = `mongodb://localhost:27017/${DB}`;
const OPTS = { family: 4, useNewUrlParser: true };
const schema = new Schema({
name: String
});
const Test = mongoose.model('test', schema);
const test = new Test({ name: 'test1' });
async function run() {
await mongoose.connect(URI, OPTS);
await connection.dropDatabase();
const doc = await Test.create(test);
assert.ok(doc);
const cond = {};
const update = { name: 'test2' };
const options = { new: true };
const updated = await Test.findOneAndUpdate(cond, update, options);
assert.strictEqual(updated.name, 'test2');
console.log('All Assertions Pass.');
await connection.close();
}
run();
issues: ./6880.js
All Assertions Pass.
issues:
@LBWright рд╣рдорд╛рд░рд╛ findByIdAndUpdate рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдо рдХреЗрд╡рд▓ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЦреЛрдЬ рдХреЛ рд╕реНрд╡реИрдк рдХрд░реЗрдВрдЧреЗ рдФрд░ рдПрдкреАрдЖрдИ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВрдЧреЗ
(рдиреЛрдб: 10767) рдкрджрд╛рд╡рдирдд рдЪреЗрддрд╛рд╡рдиреА: collection.ensureIndex рдкрджрд╛рд╡рдирдд рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп createIndexes рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
@jonaspereiar https://mongoosejs.com/docs/deprecations.html
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореЗрд░рд╛ рднреА рдпрд╣реА рд╡рд┐рдЪрд╛рд░ рд╣реИред рдореБрдЭреЗ рдпрд╣ рднреА рдорд┐рд▓рддрд╛ рд╣реИ "рд╡рд┐рдХрд▓реНрдк рдЦреЛрдЬреЗрдВ [рдлрд╝реАрд▓реНрдб] рдмрд╣рд┐рд╖реНрдХреГрдд рд╣реИ рдФрд░ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред"