0

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

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

问题是 Mongoose 需要一个匿名函数来获取结果,如果我在获得结果时尝试返回这些结果,则返回只影响匿名函数,因此父函数返回未定义。我想 Mongoose 异步运行匿名函数。

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

谢谢。

4

1 回答 1

2

你说的对; 从异步函数返回没有任何意义。您需要异步处理数据库操作的结果。(你可以使用承诺,正如 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
    }
});
于 2012-09-02T20:58:30.357 回答