Javascript 从Mongoose结果匿名函数返回父函数

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需要一个匿名函数来获取结果,如果我在有结果时尝试返回这些结果,

我正在编写一个函数,返回一个列表,其中包含Mongo数据库中注册的所有用户

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
    }
});

我读过一些关于承诺的书,但我不知道如何在我的代码中实现它。谢谢!我没有想过把匿名函数放在另一边。