NodeJS - 来自find的Mongoose返回对象?

时间:2016-05-10 10:57:49

标签: javascript node.js mongodb mongoose

我正在用Mongoose编写node.js API,

但是出于任务的目的,我希望将对象作为我的find中的变量,

所以我有这个:

exports.get_info = function(_id) {

  Session.findById(_id, function(err, session) {
  if (err)
    res.send(err);

  console.log (session); // the object is good
  return session; // trying to return it
   });
 };

但是当我打电话时:

      session_ = sessions.get_info(id);

此处session_未定义...

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

Mongoose模型find这是一个同步功能,你无法立即获得结果。你应该使用回调或更好的解决方案 - promise(mongoose支持promises):

exports.get_info = function(_id) {
  return Session.findById(_id);
 };

 get_info(/* object id */)
   .then(session > console.log(session))
    .catch(err => console.log(err));

答案 1 :(得分:0)

正确的做法是:

exports.get_info = function(_id,callback) {

  Session.findById(_id, function(err, session) {
  if (err)
    res.send(err);

  console.log (session); // the object is good
  callback(null,session); // trying to return it
   });
 };

通过这种方式,你可以得到这样的会话:

sessions.get_info(id,function(err,session){
if(err) console.log(err);
console.log(session);
});