我正在用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_
未定义...
有什么想法吗?
答案 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);
});