【发布时间】:2022-01-11 19:29:19
【问题描述】:
我在 nodejs 文件中有以下部分
client.db('metro4').collection('Station').findOne({"Name": variabled2}, function(err, res2) {
if(err) throw err;
variabled2 = res2._id;
console.log("id2 = ", res2._id);
});
console.log("v= ",variabled2);
myFunc(variabled);
myFunc 函数也有一些 mongodb 查询。
问题在于执行顺序。
v = undefined
then some of function results (which are obviously wrong)
id2 = 4
then other of functions results
我是在节点内部运行 MySQL 查询的,即使在长存储过程中也没有这些问题。
现在许多答案建议“异步和等待”。所以,我做了myFunc async 并尝试了这个
(async function() {
await recur2();
})();
但正如预期的那样,结果几乎与程序没有等待第一次查询相同。
另外,我发现 .then() 和 Promises 一样,但是当我在上面的查询中使用回调函数时,它们显然不起作用。
提前致谢。
【问题讨论】:
-
请添加您的 asym/await 函数的完整示例。您似乎正在尝试混合 Promises 和回调,这是一种非常先进的技术。 mongodb.github.io/node-mongodb-native/4.3/classes/… 不带回调参数返回一个 Promise。您应该将此语法与 async/await 一起使用。记住 async/await 只是 Promises 之上的语法糖。
标签: node.js mongodb async-await callback mongodb-query