我对 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
});
关于javascript - MongoDB .findOne 范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40347458/