node.js - 将 bufferCommands 设置为 false 在 MongooseJs 中不起作用
问题描述
我正在使用 MongooseJs 创建和读取数据库。我需要我的 Mongoose 在请求时立即显示数据库连接错误。但猫鼬不断缓冲连接错误。我还尝试将 bufferCommands 设置为 false。但没有运气......还有其他方法吗?
我正在使用猫鼬 v5.8.13 和节点 v10.16.0
提前致谢
解决方案
您还必须设置 bufferMaxEntries = 0。
传下去;{ bufferMaxEntries:0, } 作为 mongoose.connect(uri,options) 的选项和;
{ bufferCommands:false } 作为新 Schema(colName,schema,options) 的选项。
bufferCommands 是特定于猫鼬的。Mongodb 驱动程序有自己的缓冲机制,必须通过设置 bufferMaxEntries:0 并将其作为选项与连接字符串一起传递来禁用。这将在“断开连接”事件时立即停止所有缓冲。
更新:请注意,{bufferMaxEntries:0} 已被弃用,并且在将 {useUnifiedTopology:true} 传递给 mongodb 驱动程序时不起作用。看起来 UnifiedTopology 在超时后可能不会执行缓冲操作(默认为 30 秒,可以使用 serverSelectionTimeoutMS 更改)。
简而言之,将 mongoose 模式中的 bufferCommands 设置为 false,并将 mongoose 中的 useUnifiedTopology:true 和 serverSelectionTimeoutMS 设置为尽可能低。我建议使用 5000 毫秒来快速捕捉和响应失败的操作。较低的数字可能不是最佳的。我无法建立值小于 1000 毫秒的初始连接。
推荐阅读
- reactjs - 如何解决第一个渲染中的问题?
- c-preprocessor - 预处理器:为什么要仔细检查是否需要包含头文件?
- nginx - NGINX。OpenShift 集群之间的负载平衡。如何获取上游服务器的名称?
- java - Spring Boot 拦截器 - 如何排除某些 URL
- node.js - 在 Ubuntu 18.04 中使用 MongoDB 映像和 Nginx 运行 Dockerhub 映像
- c - 通过地址调用强制更改数组的地址(数组名称指向的位置)。错误存在,但它似乎工作虽然..?
- c# - Windows 窗体中的 C# WPF SendKey
- python-3.x - 如何在地图上使用 vaex 可视化大数据级别的经纬度数据
- mongodb - $match 字段从一个集合到 $lookup 中另一个集合的字段
- reactjs - 如何使数据获取与 Redux Toolkit 和 React Hooks 一起工作?