gpt4 book ai didi

javascript - MongoDB .findOne 范围

转载 作者:行者123 更新时间:2023-12-03 05:45:29 24 4
gpt4 key购买 nike

我对 var 范围有疑问。

var max;
ClassModel.findOne({ class: '1a' }, function (err, class1a) {
if (err) return handleError(err);
max = class1a.members;
console.log(max);
});
console.log(max);

为什么第一个日志记录正确的值,但第二个日志未定义?

最佳答案

第二个console.log显示undefined,因为mongoose的findOne是异步的。当您显示第一个 console.log 时,结果已被处理,而第二个则没有。

Mongoose async operations, like .save() and queries, return Promises/A+ conformant promises. This means that you can do things like MyModel.findOne({}).then() and yield MyModel.findOne({}).exec() (if you're using co).

您可以做的一件事是检查它何时完成,例如..

 var max;
var query = ClassModel.findOne({ class: '1a' }, function (err, class1a) {
if (err) return handleError(err);
return class1a.members;
});

query.then(function(data) {
console.log(data); // will show class1a.members value
});

Docs

关于javascript - MongoDB .findOne 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40347458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com