[英]Mongoose- Error while upserting using findOneAndUpdate
使用 findOneAndUpdate 進行更新插入時出現錯誤
ValidatedCertificates.findOneAndUpdate(
//query
{ "course": req.body.course_name, "batch": req.body.batch_name },
{ //update
"issued": false,
"certificates": req.body.validatedBatch.certificates,
},
{ upsert: true },
{ useFindAndModify: false},
function (err, doc) {
if (err)
return res.json({
"status_code": 500,
"status_message": "Internal Error",
"data": err
});
else
return res.json({
"status_code": 200,
"status_message": "Validated Successfully",
});
});
}
但我收到如下錯誤。
DeprecationWarning: Mongoose: `findOneAndUpdate()` and `findOneAndDelete()` without the `useFindAndModify` option set to false are deprecated. See: https://mongoosejs.com/docs/deprecations.html#-findandmodify-
updatd (node:14179) UnhandledPromiseRejectionWarning: MongooseError: Callback must be a function, got [object Object]
我傳遞{upsert: true}
和{ useFindAndModify: false}
時是否有任何錯誤
請求位置:
{ upsert: true },
{ useFindAndModify: false}, //callback function
和:
{ upsert: true}, //callbackfuntion
並在 server.js 文件中連接到 mongodb 時,通過配置如下:
mongoose
.connect(dbURL, {
useNewUrlParser: true,
useCreateIndex: true,
useUnifiedTopology: true,
useFindAndModify: false
})
.then(() => {
console.log(`mongoDb connection establish successfully at: ${dbURL}`);
});
findOneAndUpdate方法簽名是這樣的,帶有選項和回調:
findOneAndUpdate(conditions, update, options, callback)
第四個參數必須是回調,但您發送{ useFindAndModify: false}
。 所以只需刪除{ useFindAndModify: false}
就可以了。
要解決棄用錯誤,請將此{ useFindAndModify: false }
選項添加到 mongoose.connect
mongoose.connect(uri, { useFindAndModify: false });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.