Node.js报错之Cannot use a session that has ended

 使用Node.js连接MongoDB时出现报错信息,报错信息的意思为无法使用已经结束的对话。查阅代码进行分析问题,代码如下:

//引入Mongodb
const {MongoClient} = require("mongodb")

//定义数据库连接的地址
const url = "mongodb://127.0.0.1:27017"

//定义要操作的数据库
const dbName = "peas"

//实例化MongoClient 传入数据库连接地址,加入第二个参数防止后期不被支持
const client = new MongoClient(url,{ useNewUrlParser: true,  useUnifiedTopology: true })

//连接数据库
client.connect((err) => {
  if(err){
    console.log(err);
    return
  }
  console.log("数据库连接成功");
  let db = client.db(dbName)
  db.collection("peas").find({}).toArray((err,data) => {
    console.log(err,data);
  }) 
  //操作数据库完毕以后一定要关闭数据库连接
  client.close() 
})

分析问题

 由上述代码分析报错原因:由于连接数据库的操作为异步操作,在执行连接数据库获取数据信息的操作时,还未结束,数据库就已经被关闭了,导致出现报错信息无法使用已经结束的对话,我们将关闭数据库的代码放入连接数据库函数的内部即可,代码如下:

//引入Mongodb
const {MongoClient} = require("mongodb")

//定义数据库连接的地址
const url = "mongodb://127.0.0.1:27017"

//定义要操作的数据库
const dbName = "peas"

//实例化MongoClient 传入数据库连接地址,加入第二个参数防止后期不被支持
const client = new MongoClient(url,{ useNewUrlParser: true,  useUnifiedTopology: true })

//连接数据库
client.connect((err) => {
  if(err){
    console.log(err);
    return
  }
  console.log("数据库连接成功");
  let db = client.db(dbName)
  db.collection("peas").find({}).toArray((err,data) => {
    console.log(err,data);
    //操作数据库完毕以后一定要关闭数据库连接
  	client.close() 
  }) 
})

 问题解决~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值