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

Return parent function from a Mongoose results anonymous function

本文关键字:函数 返回 Mongoose 结果      更新时间:2023-09-26

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

function getUsers() {
    db.collection('users').find({}, {username: true}, function(error, results) {
        if (results) return results;
        return [];
    });
}

问题是Mongoose需要一个匿名函数来获取结果,如果我在有结果时试图返回这些结果,那么返回只影响匿名函数,所以父函数返回undefined。我想Mongoose异步运行匿名函数。

解决这个问题的最佳方法是什么?

谢谢。

你是对的;从异步函数返回没有任何意义。您需要异步处理数据库操作的结果。(正如Kamugo提到的,您可以使用promise,但即使是promise也使用回调函数)。

实现这一点的最直接的方法是通过传递回调使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
    }
});