首页 > 解决方案 > 调整猫鼬的选项

问题描述

我是 MongoDB 的新手,很难理解 connect() 方法中使用的不同标志,这些标志在第二个对象参数中传递。

const connectDB = async() => {
    const conn = await mongoose.connect(process.env.MONGO_URI,{
        useNewUrlParser: true, useCreateIndex:true, useFindAndModify:false, useUnifiedTopology: true
    });
}

标签: mongodb

解决方案


有可用的文档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”表示两者都尝试。


推荐阅读