我正在try 使用Node从MongoDB Atlas集合中读取数据.js.当我试图阅读我Collection 的内容时,我得到了错误MongoError: Cannot use a session that has ended.这是我的密码

client.connect(err => {
    const collection = client
        .db("sample_airbnb")
        .collection("listingsAndReviews");

    const test = collection.find({}).toArray((err, result) => {
        if (err) throw err;
    });
    client.close();
});

我可以查询特定文档,但不确定如何返回集合中的所有文档.我已经搜索了这个错误,我找不到太多关于它的信息.谢谢

推荐答案

在代码中,它不会等待find()完成执行,而是继续执行client.close()语句.因此,当它试图从数据库读取数据时,连接已经结束.我也遇到了同样的问题,并这样解决了它:

// connect to your cluster
const client = await MongoClient.connect('yourMongoURL', { 
    useNewUrlParser: true, 
    useUnifiedTopology: true,
});
// specify the DB's name
const db = client.db('nameOfYourDB');
// execute find query
const items = await db.collection('items').find({}).toArray();
console.log(items);
// close connection
client.close();

编辑:这整件事应该在一个async函数中.

Mongodb相关问答推荐

在MogoDB中按时间间隔分组、统计文档和获取间隔时间

GO:如何在MongoDB中区分空字符串和nil

字段$set聚合导致错误美元($)前缀字段$concatArrays对于存储无效"

Mongoose updateMany 以及 Where 和 orWhere?

在延迟函数中重用 context.WithTimeout

管道聚合mongodb同一$project阶段的计算字段?

使用名为 Object 键的 uuid 创建 mongodb 文档

哪个库最适合用于带有 Scala 的 MongoDB?

Mongo 无法启动

在 MongoDb 中查询小于 NOW 的日期时间值

Mongodb插入没有_id字段的文档

mongo php副本连接非常慢

启动mongodb和express的正确方法?

在 mongodb 的一次更新调用中推送到两个单独的数组

Node + Mongoose:获取最后插入的 ID?

如何使用node.js http服务器从mongodb返回大量行?

具有 AWS 云形成和自动zoom 的 Mongodb 集群

如何在 Meteor 应用程序之间共享 MongoDB 集合?

如何在 NoSql 数据库(MongoDB)中强制执行外键?

MongoDB打印两点之间的距离