为什么我对“相同”的东西有不同的结果?

时间:2015-03-16 11:01:25

标签: node.js mongoose

我需要提一下我一般都是Node.js的新手,但我不确定为什么以下代码会在questionsallQuestions变量的控制台中为我提供不同的输出?

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

1 个答案:

答案 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 ...
}