Javascript 如何从mongodb数据库中获取所有文档?

Javascript 如何从mongodb数据库中获取所有文档?,javascript,node.js,async-await,Javascript,Node.js,Async Await,我有一个类,其中包含用于MongoDB连接的帮助器方法,包括connect、findDocuments和insertDocument 异步findDocuments(收集、查询){ var response=等待this.database.collection(collection.find(query.toArray(); 返回响应; } log(mongo.findDocuments('users',{})); 我希望得到数据库中所有用户的列表。 我收到了一个承诺。异步函数总是返回一个承诺

我有一个类,其中包含用于MongoDB连接的帮助器方法,包括connect、findDocuments和insertDocument

异步findDocuments(收集、查询){
var response=等待this.database.collection(collection.find(query.toArray();
返回响应;
}
log(mongo.findDocuments('users',{}));
我希望得到数据库中所有用户的列表。
我收到了一个承诺。

异步函数总是返回一个承诺。要查看承诺信息,如果您在函数中,则需要等待结果,如果您在全局范围中,则需要使用
then()

您的代码似乎在全局范围内,因此您需要使用

class Mongo {
  async findDocuments(collection, query) {
    var response = (await this.database.collection(collection).find(query)).toArray();
    return response;
  }
}

let mongo = new Mongo();

mongo.findDocuments('users', {}).then(result => {
  console.log(result);
});

find
返回一个游标而不是承诺,因此您正确调用了它。你得到了一个承诺,因为你没有等待寻找文件的电话

...
async findDocuments(collection, query) {
        var response = await this.database.collection(collection).find(query).toArray();
        return response;
}
...

// await here
console.log(await mongo.findDocuments('users', {}));
这是假设您也在异步函数中调用它

节点驱动程序参考:

异步函数总是返回一个promise,如果您
等待该承诺,您就会得到真正的结果。@ggorlen您需要
等待
查找结果,我已将其括在括号中。