Javascript NodeJS-Mongoose从find返回对象?
我正在用Mongoose编写node.js API 但是为了任务的目的,我想从我的find中获取对象作为变量 所以我有这个:Javascript NodeJS-Mongoose从find返回对象?,javascript,node.js,mongodb,mongoose,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; // try
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);
此处未定义会话
有什么想法吗?Mongoose model
find
这是一个同步功能,您无法立即获得结果。您应该使用回调或更好的解决方案-承诺(mongoose支持承诺):
正确的做法是:
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);
});
您还可以返回error变量并在调用函数中打印它,例如:callback(err)
sessions.get_info(id,function(err,session){
if(err) console.log(err);
console.log(session);
});