mongodb - 调整猫鼬的选项
问题描述
我是 MongoDB 的新手,很难理解 connect() 方法中使用的不同标志,这些标志在第二个对象参数中传递。
const connectDB = async() => {
const conn = await mongoose.connect(process.env.MONGO_URI,{
useNewUrlParser: true, useCreateIndex:true, useFindAndModify:false, useUnifiedTopology: true
});
}
解决方案
有可用的文档mongoose.connect
。
[选项] «Object» 传递给 MongoDB 驱动程序的 connect() 函数,除了下面解释的 4 个特定于猫鼬的选项。
[options.bufferCommands=true] «Boolean» Mongoose 特定选项。设置为 false 以禁用与此连接关联的所有模型的缓冲。
[options.dbName] «String» 我们要使用的数据库的名称。如果未提供,请使用连接字符串中的数据库名称。
[options.user] «String» 用于身份验证的用户名,相当于 options.auth.user。为向后兼容而维护。
[options.pass] «String» 身份验证密码,相当于 options.auth.password。为向后兼容而维护。
[options.autoIndex=true] «Boolean» Mongoose 特定选项。设置为 false 以禁用与此连接关联的所有模型的自动索引创建。
[options.useNewUrlParser=false] «Boolean» 默认为 False。设置为 true 以选择加入 MongoDB 驱动程序的新 URL 解析器逻辑。
[options.useUnifiedTopology=false] «Boolean» 默认为 False。设置为 true 以选择加入 MongoDB 驱动程序的副本集和分片集群监控引擎。
[options.useCreateIndex=true] «Boolean» Mongoose 特定选项。如果为真,此连接将使用 createIndex() 而不是 ensureIndex() 通过 Model.init() 进行自动索引构建。
[options.useFindAndModify=true] «Boolean» 默认为真。设置为 false 以使 findOneAndUpdate() 和 findOneAndRemove() 使用本机 findOneAndUpdate() 而不是 findAndModify()。
[options.reconnectTries=30] «Number» 如果您连接到单个服务器或 mongos 代理(而不是副本集),MongoDB 驱动程序将尝试在 reconnectTries 次的每个 reconnectInterval 毫秒内重新连接,然后放弃。当驱动程序放弃时,猫鼬连接会发出一个 reconnectFailed 事件。此选项对副本集连接没有任何作用。
[options.reconnectInterval=1000] «Number» 请参见上面的 reconnectTries 选项。
[options.promiseLibrary] «Class» 设置底层驱动程序的承诺库。
[options.poolSize=5] «Number» MongoDB 驱动程序将为此连接保持打开的最大套接字数。默认情况下,poolSize 为 5。请记住,从 MongoDB 3.4 开始,MongoDB 一次只允许每个套接字执行一个操作,因此如果您发现有一些慢速查询阻塞了来自进行中。请参阅 MongoDB 和 Node.js 中的慢速列车。
[options.bufferMaxEntries] «Number» MongoDB 驱动程序也有自己的缓冲机制,当驱动程序断开连接时会启动。如果您希望数据库操作在驱动程序未连接时立即失败,而不是等待重新连接,请将此选项设置为 0 并将模式上的 bufferCommands 设置为 false。
[options.connectTimeoutMS=30000] «Number» 由于初始连接期间不活动,MongoDB 驱动程序在终止套接字之前将等待多长时间。默认为 30000。此选项透明地传递给 Node.js 的 socket#setTimeout() 函数。
[options.socketTimeoutMS=30000] «Number» 由于初始连接后不活动,MongoDB 驱动程序在终止套接字之前将等待多长时间。由于没有活动或长时间运行的操作,套接字可能处于非活动状态。默认设置为 30000,如果您希望某些数据库操作运行时间超过 20 秒,则应将其设置为最长运行操作的 2-3 倍。此选项在 MongoDB 驱动程序成功完成后传递给 Node.js socket#setTimeout() 函数。
[options.family=0] «Number» 透明地传递给 Node.js 的 dns.lookup() 函数。可以是 0、4 或 6。“4”表示仅使用 IPv4,“6”表示仅使用 IPv6,“0”表示两者都尝试。
推荐阅读
- python - 无法加载 sklearn.datasets 导入 load_iris
- android - 列表重复从一个片段导航并在 NavigationComponents 中返回
- apache-spark - 并行运行多个 Spark 应用程序
- python - 我发现在 python 中为 numpy 数组编制索引很奇怪
- c - 读取字符串时scanf未给出预期结果
- sensenet - SenseNet 新创建的内容在查询时不显示
- for-loop - 有没有办法在 Google Script 中加速这个 for 循环?
- angular - 在Angular 6中的表单中添加动态输入文本时出现索引问题
- github - 如何在 Github Actions Job 期间用代码中的 Secret 替换 API 密钥?
- c# - Mailkit 使用 Imap 连接到 Hotmail 并获取电子邮件