我需要提一下我一般都是Node.js的新手,但我不确定为什么以下代码会在questions
和allQuestions
变量的控制台中为我提供不同的输出?
var models = require('./models')(mongoose);
var query = models.Question.find({});
var questions = Array();
query.exec(function(err, allQuestions){
//catch the error;
questions = allQuestions;
console.log(allQuestions);
});
console.log(questions);
问题变量的输出仅为Mongoose: questions.find({}) { fields: undefined }
,而allQuestions
将包含数据库中的所有问题。
我需要知道为什么?
另外,我需要我的question
变量包含来自数据库的allQuestions
。
答案 0 :(得分:1)
多数民众赞成因为query.exec()
以异步方式运行您作为参数传递的函数,而最后一行console.log(questions);
将在回调之前执行。
如果您需要questions
的值,请使用其他回调:
var models = require('./models')(mongoose);
var query = models.Question.find({});
var questions = Array();
query.exec(function(err, allQuestions){
//catch the error;
questions = allQuestions;
console.log(allQuestions);
done();
});
function done() {
console.log(questions);
// handle `questions` here ...
}