MongoDB mongoose findOneAndUpdate()wait不等待。A3在A2之前运行
A3日志在A2之前运行。我该如何解决这个问题?我想等到更新返回,然后将结果用于下一个逻辑。提前谢谢MongoDB mongoose findOneAndUpdate()wait不等待。A3在A2之前运行,mongodb,mongoose,async-await,Mongodb,Mongoose,Async Await,A3日志在A2之前运行。我该如何解决这个问题?我想等到更新返回,然后将结果用于下一个逻辑。提前谢谢 const MongoClient = require("mongodb").MongoClient; console.log('A1'); // Inserting into DB await db.collection(companyCollection).findOneAndUpdate({"_id": new mongo.ObjectID(companyId)}, {$set
const MongoClient = require("mongodb").MongoClient;
console.log('A1');
// Inserting into DB
await db.collection(companyCollection).findOneAndUpdate({"_id": new mongo.ObjectID(companyId)}, {$set: company}, {upsert: false}, await async function (err, result) {
console.log('A2');
let resultRes = null;
if (err) {
resultRes = { success: false };
} else {
resultRes = { success: true };
}
return callback(err ? true : false, resultRes);
});
console.log('A3');
findOneAndUpdate
有两个签名,要么返回承诺,要么调用回调。您的版本使用回调版本,因此添加await
是毫无意义的,因为不会返回任何承诺
下面是一个利用promise语法的简单重写:
const MongoClient = require("mongodb").MongoClient;
async function doSomething() {
console.log('A1');
// Inserting into DB
let result = await db.collection(companyCollection).findOneAndUpdate({"_id": new mongo.ObjectID(companyId)}, {$set: company}, {upsert: false});
console.log('A2');
... do whatever you want ...
console.log('A3');
}
return doSomething();