MongoDB MonkAPI 根据在数据库请求之外可用的查找结果设置变量

MongoDB MonkAPI setting a variable based on find result that is available outside the db request

我正在尝试根据在 Node JS 应用程序中通过 Monk API 在 MongoDB 上查找的结果设置一个变量(这是我第一次使用 MongoDB ).

这是我的代码示例;

var variableIWantToSet;
var collection = req.db.get('myCollection');
collection.find( { foo: 'bar' },{
  fields : { myTargetField: 1, _id: 0},
  limit : 1,
  sort : {$natural : -1}
}
, function(err, doc) {
    if (err) {
      console.log(err);
    }
    variableIWantToSet = doc[0].myTargetField;
});
console.log(variableIWantToSet);

如果我 console.log(doc[0].myTargetField) 在函数中得到正确的值,但是 console.log(variableIWantToSet) returns undefined.

感谢帮助。谢谢。

console.log 在回调之外。所以它是 undefined。放在回调中。

var collection = req.db.get('myCollection');
collection.find( { foo: 'bar' },{
  fields : { myTargetField: 1, _id: 0},
  limit : 1,
  sort : {$natural : -1}
}
, function(err, doc) {
    if (err) {
      console.log(err);
    }
    var variableIWantToSet = doc[0].myTargetField;
    console.log(variableIWantToSet);
});

为了更容易理解:

 //The callback function will be call after the mongodb response right value.
var callback = function(err, doc) {
    if (err) {
      console.log(err);
    }
    variableIWantToSet = doc[0].myTargetField;
    console.log(variableIWantToSet); // return doc[0].myTargetField;
}; 

var variableIWantToSet;

var collection = req.db.get('myCollection');
collection.find( { foo: 'bar' },{
  fields : { myTargetField: 1, _id: 0},
  limit : 1,
  sort : {$natural : -1}
}
, callback);
 console.log(variableIWantToSet); // return undefined;

如果不了解callback,google它是异步编程的基础,这让javascript与众不同。