使用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()
})
})
问题解决~