Javascript 从Mongoose结果匿名函数返回父函数
我正在编写一个函数,返回一个列表,其中包含Mongo数据库中注册的所有用户Javascript 从Mongoose结果匿名函数返回父函数,javascript,node.js,mongoose,Javascript,Node.js,Mongoose,我正在编写一个函数,返回一个列表,其中包含Mongo数据库中注册的所有用户 function getUsers() { db.collection('users').find({}, {username: true}, function(error, results) { if (results) return results; return []; }); } 问题是Mongoose需要一个匿名函数来获取结果,如果我在有结果时尝试返回这些结果,
function getUsers() {
db.collection('users').find({}, {username: true}, function(error, results) {
if (results) return results;
return [];
});
}
问题是Mongoose需要一个匿名函数来获取结果,如果我在有结果时尝试返回这些结果,则返回仅影响匿名函数,因此父函数返回未定义的结果。我想Mongoose异步运行匿名函数
解决这个问题的最好办法是什么
谢谢。你说得对;从异步函数返回没有任何意义。您需要异步处理数据库操作的结果。(正如Kamugo提到的,您可以使用承诺,但即使承诺也使用回调函数) 最直接的方法是通过传入回调使
getUsers
异步,并将该回调用于find
的回调:
function getUsers(callback) {
db.collection('users').find({}, {username: true}, callback);
}
然后像这样使用它:
getUsers(function(error, results) {
if (results) {
// do something with results
} else {
// no results
}
});
我读过一些关于承诺的书,但我不知道如何在我的代码中实现它。谢谢!我没有想过把匿名函数放在另一边。