我试图在Node JS应用程序中基于MongoDB上的Monk API查找结果设置变量(这是我第一次使用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
。
帮助表示感谢。感谢。
答案 0 :(得分:0)
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
,那就谷歌吧,这是异步编程的基础,这会使javascript与众不同。