Nodejs连接MangoDB之后查找数据返回undefined的问题解决方法
案例
const { MongoClient } = require('mongodb')async function main(){
const url = "mongodb://localhost:27017"
const client = new MongoClient(url);
const dbName = 'my-react-admin'
try {
await client.connect();
console.log('Access to database!')
const db = client.db(dbName);
db.collection('users').find({}).toArray((err, data) => {
// if (err) throw err
console.log(data)
})
} catch (e) {
console.error(e);
}
finally {
await client.close();
}
}
main().catch(console.error);
这样写出来运行,输出的是
Access to database!
undefined
也就是说,其实连接上了数据库但是没返回东西。
然后加上一个
throw err
看看到底哪里出了问题再次运行,报错了
MongoExpiredSessionError: Cannot use a session that has ended
【Nodejs连接MangoDB之后查找数据返回undefined的问题解决方法】发现是因为异步操作的问题导致在数据库断开连接之前并没有进行数据查询,也就是
查数据
那一步并没有进行异步操作,而在Array里面传入回调函数是没法返回Promise对象的,所以也没法添加await。删除回调函数之后,再添加await输出,即可解决这个问题。
const { MongoClient } = require('mongodb')
const url = "mongodb://localhost:27017"
const client = new MongoClient(url);
async function main(){
const dbName = 'my-react-admin'
try {
await client.connect();
console.log('Connect to database!')
const db = client.db(dbName);
const result = await db.collection('users').find({}).toArray()
console.log(result)
} catch (e) {
console.error(e);
} finally {
await client.close();
}
}
main().catch(console.error);
推荐阅读
- py连接mysql
- Android|Android BLE蓝牙连接异常处理
- springboot整合数据库连接池-->druid
- Python3|Python3 MySQL 数据库连接
- Xshell5|Xshell5 远程连接本地虚拟机Ubuntu16
- mac|mac 链接linux服务器 如何在Mac上连接服务器
- TCP长连接与段链接
- 运维|如何限制IP 通过 SSH连接服务器
- 网络|网络编程释疑(TCP连接拔掉网线后会发生什么)
- 服务器未能释放tcp连接,TCP连接的建立和释放