Node.js中无法断开Mongoose与MongoDB连接的问题求助
问题原因与解决方案
- 核心问题:你没有等待
Cat.create()这个异步操作完成就断开了数据库连接。Cat.create()返回的是Promise,不加await的话,代码会直接跳到断开连接的步骤,此时创建文档的操作还未执行,连接断开后自然触发报错。 - 修复后的代码:
const mongoose = require('mongoose'); async function run() { const connection = await mongoose.connect("mongodb://****:******@127.0.0.1:27017/test_database_1"); const CatSchema = mongoose.Schema( { name: String } ) const Cat = mongoose.model('Cat', CatSchema, 'Cat') // 关键:添加await等待文档创建完成 const kitty = await Cat.create({ name: 'Cat' }); await connection.disconnect(); } run()
- 补充说明:报错信息看似有误导性,实则是因为断开连接的时机早于数据库操作的执行时机,当创建文档的操作发起时,连接已经关闭,所以提示“客户端必须连接才能执行操作”。
内容的提问来源于stack exchange,提问作者ibex
相关产品推荐
相关产品推荐

