如何降低Mongoose中MongoDB操作的缓冲超时时间?
调整Mongoose操作缓冲超时时间的方法
你遇到的buffering timed out错误是Mongoose自身的操作缓冲队列超时,和MongoDB驱动的serverSelectionTimeoutMS、socketTimeoutMS等参数无关,需要通过Mongoose专属的bufferTimeoutMS选项调整。以下是具体实现方式:
全局生效(所有模型共用)
在调用mongoose.connect()时,直接在配置选项中设置bufferTimeoutMS:
const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:27017/your_database_name', { bufferTimeoutMS: 3000 // 将超时时间设为3000ms(3秒) });
单个模型生效(仅目标模型)
如果只需调整特定模型的缓冲超时,在定义Schema时传入该选项:
const settingsSchema = new mongoose.Schema({ // 你的Schema字段定义 }, { bufferTimeoutMS: 3000 }); const Settings = mongoose.model('settings', settingsSchema);
补充说明
- Mongoose默认会缓冲未建立连接时发起的数据库操作,
bufferTimeoutMS就是控制这个缓冲队列的超时时间,超过设定值后就会抛出你遇到的缓冲超时错误。 - 你之前尝试的
serverSelectionTimeoutMS是驱动选择MongoDB服务器的超时,socketTimeoutMS是socket连接的读写超时,wtimeoutMS是写操作的确认超时,均不影响Mongoose的操作缓冲逻辑,所以无法解决问题。
内容的提问来源于stack exchange,提问作者Timothy Pham
相关产品推荐
相关产品推荐

