node.js函数只应在MongoDB查询完成后返回

我试图从一个执行mongodb查询的函数返回一个值。 我的问题是该函数没有返回任何内容,因为查询没有完成之前,它返回。

如果我尝试console.log(checkChickenValue(2)); 例如我得到undefined回来。 这里是相关的function:

function checkChickenValue(chickenid) { MongoClient.connect(url, function(err, db) { var cursor = db.collection('games').find({}, { limit : 1, fields : { _id : 1 }, sort : { _id : -1 } }).toArray(function(err, docs) { var id = docs[0]._id; var test = db.collection('games').findOne({ _id : id }, function(err, result) { switch(chickenid) { case 1: complete(result.chicken1.value); break; case 2: complete(result.chicken2.value); break; case 3: complete(result.chicken3.value); break; case 4: complete(result.chicken4.value); break; case 5: complete(result.chicken5.value); break; case 6: complete(result.chicken6.value); break; case 7: complete(result.chicken7.value); break; case 8: complete(result.chicken8.value); break; } }); }); }); function complete (value) { return value; } }; 

我怎么让这个函数等到complete()被调用?

在此先感谢您的帮助!

你需要通过callback来返回结果。 为你的函数添加一个“callback”参数,代表一个函数,当结果准备就绪时会调用这个函数。

 function checkChickenValue(chickenid, callback) { 

然后当你有结果时,通过你的callback返回它:

 switch(chickenid) { case 1: callback(complete(result.chicken1.value)); 

然后,使用你的function,做这样的事情:

 checkChickenValue(2, function(result){ console.log(result); });