рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░,
рдореИрдВ рдиреЗрд╡рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг 5.0.3 рдФрд░ рдиреЛрдб рд╕рдВрд╕реНрдХрд░рдг 9.4.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдиреЗрд╡рд▓рд╛ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ model.create рдХреЛ рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдбреАрдмреА рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреАрдмреА рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рд╣реЗрдЬреЗ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд╛рджрд╛ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред
async function test(){
let schema = new mongoose.Schema({a: String});
let model = mongoose.model('test', schema);
await model.remove({}).exec();
await model.create({ a: 'test'},
(err,result)=> {console.log('created');});
await model.findOneAndUpdate(
{ a : 'test' } ,
{ a: 'newValue'}
)
.exec((err, result) => {
console.log('update : '+result);
});
await model.find({a: 'test'},(err,result) => {
console.log(result);
});
}
output in terminal :
update : null
found :
created
FindOneAndUpdate рдХреЛ рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдЕрдВрдд рдореЗрдВ "рдмрдирд╛рдпрд╛ рдЧрдпрд╛" рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдзрд┐ рдХрд╛ рдХреЙрд▓рдмреИрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдкреНрд░рддреАрдХреНрд╖рд╛ async рдХрд╛рд░реНрдп 'рдмрдирд╛рдиреЗ' рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣реА рдереАред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рд╡рд╛рджрд╛ рдЬреЛрдбрд╝рдХрд░ рдЬреЛ рдХрд┐ рдПрдХ рдмрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рдХреЙрд▓рдмреИрдХ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
async function test(){
let schema = new mongoose.Schema({a: String});
let model = mongoose.model('test', schema);
await model.remove({}).exec();
await new Promise((resolve,reject) => {
model.create({ a: 'test'},
(err,result)=> {
console.log('created');
resolve();
});
});
await model.findOneAndUpdate(
{ a : 'test' } ,
{ a: 'newValue'}
)
.exec((err, result) => {
console.log('update : '+result);
});
await model.find({a: 'newValue'},(err,result) => {
console.log('found : ' +result);
});
}
output in terminal:
created
update : { _id: 5a735fbc1fe826233014d62d, a: 'test', __v: 0 }
found : { _id: 5a735fbc1fe826233014d62d, a: 'newValue', __v: 0 }
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рд╣реИред
рдбреАрдмреА рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХрд╛рд░реНрдп рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рд╣рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИ рддреЛ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдСрдкрд░реЗрд╢рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреНрд╡реЗрд░реАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ model.create рдХрд╛ рднреА рдорд╛рдорд▓рд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реА рдХреНрд╡реЗрд░реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрд╣ рднреА рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдкреВрд░реЗ рдХрд┐рдП рдЧрдП рд╡рд╛рджреЗ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдбреАрдмреА рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╢рд╛рдпрдж рдореИрдВ рдкреВрд░реА рдмрд╛рдд рд╕реЗ рдЪреВрдХ рдЧрдпрд╛ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрд╕реНрдкрд╖реНрдЯ рд▓рдЧрддрд╛ рд╣реИ
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдореБрдЭреЗ 4.x рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдкрдврд╝рдирд╛ рдпрд╛рдж рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдореЙрдбрд▓ рдкрд░ рдХреЙрд▓рдмреИрдХ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
let x = model.create({ a: 'test' }, () => {})
x.then(console.log(x)) //TypeError: Cannot read property 'then' of undefined
рдпрджрд┐ рдЖрдк рдХреЙрд▓рдмреИрдХ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ:
let x = model.create({ a: 'test' })
x.then(console.log(x)) // Promise { <pending> }
model.js рдХреЗ рд▓рд┐рдП 5.x рд╕реНрд░реЛрдд utils.promiseOrCallback рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдЗрд╕реЗ рд╕рд╣рди рдХрд░рддрд╛ рд╣реИ
рд╣рд╛рдБ, @lineus рд╕рд╣реА рд╣реИ, рдХреНрдпрд╛ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ @CodeurSauvage рдмрдВрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ?
@CodeurSauvage @lineus рд╕рд╣реА рд╣реИ, рдЕрдЧрд░ рдХреЙрд▓рдмреИрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдиреЗрд╡рд▓рд╛ 5 рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рдо рдХрд░рддреА рд╣реИ:
await model.create({ a: 'test'},
(err,result)=> {console.log('created');});
рд╕рд╛рде рдореЗрдВ:
await model.create({ a: 'test'}).then(result => console.log('created'));
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдореБрдЭреЗ 4.x рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдкрдврд╝рдирд╛ рдпрд╛рдж рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдореЙрдбрд▓ рдкрд░ рдХреЙрд▓рдмреИрдХ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдХреЙрд▓рдмреИрдХ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ:
model.js рдХреЗ рд▓рд┐рдП 5.x рд╕реНрд░реЛрдд utils.promiseOrCallback рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдЗрд╕реЗ рд╕рд╣рди рдХрд░рддрд╛ рд╣реИ