等待 MongoDB 个查询结果
Waiting for MongoDB query result
我一直在搜索较早的答案,但无法弄清楚如何针对我的特定用例进行设置,而且许多答案似乎已过时。
Node.js 控制台警告 promise 库被弃用,所以我尝试使用 Bluebird(无济于事)。如果还有其他解决方案,我会尽力而为,不必是Bluebird。
这是我的代码:
let shortInt;
count().then(result => shortInt = result).catch(err => console.log(err));
console.log("shortInt " + shortInt);
//doing some other stuff here
以及我需要等待结果的函数:
async function count() {
let answer;
await Url.findOne({}).sort({short_url:-1}).exec(function (err,ur) { if (err) return err; answer = ur.short_url });
console.log("answer " + answer);
return answer;
}
对于 console.log(shortInt),我得到 'undefined',并且 console.log(answer) 总是在最后打印,在所有//做其他事情之后。
我需要更改什么以便在我继续//做其他事情之前设置 shortInt。
我设置了 mongoose.Promise = require("bluebird");不会收到弃用警告。
你的脚本实际上在 count()
结果返回之前继续 运行,Node 在异步操作之前执行主线程。
您可以将您的代码移动到解析承诺的范围内。
count()
.then(shortInt => {
// we can access shortInt here
// rest of code ...
})
.catch(err => console.log(err));
我一直在搜索较早的答案,但无法弄清楚如何针对我的特定用例进行设置,而且许多答案似乎已过时。
Node.js 控制台警告 promise 库被弃用,所以我尝试使用 Bluebird(无济于事)。如果还有其他解决方案,我会尽力而为,不必是Bluebird。
这是我的代码:
let shortInt;
count().then(result => shortInt = result).catch(err => console.log(err));
console.log("shortInt " + shortInt);
//doing some other stuff here
以及我需要等待结果的函数:
async function count() {
let answer;
await Url.findOne({}).sort({short_url:-1}).exec(function (err,ur) { if (err) return err; answer = ur.short_url });
console.log("answer " + answer);
return answer;
}
对于 console.log(shortInt),我得到 'undefined',并且 console.log(answer) 总是在最后打印,在所有//做其他事情之后。
我需要更改什么以便在我继续//做其他事情之前设置 shortInt。
我设置了 mongoose.Promise = require("bluebird");不会收到弃用警告。
你的脚本实际上在 count()
结果返回之前继续 运行,Node 在异步操作之前执行主线程。
您可以将您的代码移动到解析承诺的范围内。
count()
.then(shortInt => {
// we can access shortInt here
// rest of code ...
})
.catch(err => console.log(err));