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

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

本文关键字:查找 结果 变量 设置 MonkAPI 数据库 请求 MongoDB      更新时间:2023-09-26

我正在尝试根据在NodeJS应用程序中通过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)返回undefined

感谢您的帮助。谢谢

console.log在回调之外。所以它是CCD_ 4。把它放在回调中。

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,谷歌一下,它是异步编程的基础,这让javascript与众不同。