簡體   English   中英

Mongoose- 使用 findOneAndUpdate 更新插入時出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM