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

时间:2015-02-28 14:24:36

标签: javascript node.js mongodb monk

我试图在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

帮助表示感谢。感谢。

1 个答案:

答案 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与众不同。