更新mongodb依赖项后发出警告

时间:2017-02-23 07:14:16

标签: mongodb mongoose

我已安装最新版本的winston-mongodb。我注意到mongodb包中的winston-mongodb版本已从1.6.6版本更新为2.0.7版本。更新后,我得到了这个warning

  

不推荐使用server / replset / mongos选项,以及它们的所有选项   在选项对象的顶级支持   [poolSize,SSL,sslValidate,sslCA,的sslcert,sslKey,sslPass,autoReconnect的,NODELAY,的keepAlive,connectTimeoutMS,socketTimeoutMS,reconnectTries,reconnectInterval,哈,haInterval,replicaSet,secondaryAcceptableLatencyMS,acceptableLatencyMS,connectWithNoPrimary,authSource,W,wtimeout,J,forceServerObjectId ,serializeFunctions,ignoreUndefined,生,promoteLongs,bufferMaxEntries,readPreference,pkFactory,promiseLibrary,readConcern,maxStalenessSeconds,loggerLevel,记录器,promoteValues,promoteBuffers,promoteLongs,domainsEnabled,keepAliveInitialDelay,checkServerIdentity,validateOptions]

我该如何解决这个问题?有什么想法吗?

3 个答案:

答案 0 :(得分:5)

根据错误消息;

the server/replset/mongos options are deprecated, all their options are supported at the top level of the options object

因此,该问题的解决方案只是将设置选项从服务器,replset,socketOptions,mongos和任何其他层次结构选项移动到对象的顶层。

mongoose.connect( 'mongodb://localhost/db',
  {
    useMongoClient: true,
    server: {
            ssl: true,
            socketOptions: {
                keepAlive: 300000,
                connectTimeoutMS: 30000
            },
            auto_reconnect: true,
            reconnectTries: 300000,
            reconnectInterval: 5000
        },
    promiseLibrary: global.Promise
  }
);

change it to;

mongoose.connect( 'mongodb://localhost/db',
  {
    useMongoClient: true,
    poolSize: 2,
    ssl: true,
    keepAlive: 300000,
    connectTimeoutMS: 30000,
    autoReconnect: true,
    reconnectTries: 300000,
    reconnectInterval: 5000,
    promiseLibrary: global.Promise
  }
);

希望它有所帮助! 谢谢,

答案 1 :(得分:0)

我也注意到了这一点。
看来这是一个非致命的错误,因为这个问题已经关闭。见:https://jira.mongodb.org/browse/NODE-941。 我测试过: mongodb@2.2.24 - 报告警告时给出!!! mongodb@2.2.23 - 因错误而死亡。 mongodb@2.2.22 - 没有警告,工作正常....

所以我建议现在安装第2.2.22节,看看是否给出了。这就是我所做的 - 因为我不喜欢看到警告 我希望这会有所帮助。

答案 2 :(得分:0)

如果从4.x升级到5.x并且您没有在4.x中使用useMongoClient选项,则可能会看到以下弃用警告:

不推荐使用server / replset / mongos选项,在选项对象的顶层支持所有选项

在旧版本的MongoDB驱动程序中,您必须为服务器连接,副本集连接和mongos连接指定不同的选项:

    mongoose.connect(myUri, {
  server: {
    socketOptions: {
      socketTimeoutMS: 0,
      keepAlive: true
    },
    reconnectTries: 30
  },
  replset: {
    socketOptions: {
      socketTimeoutMS: 0,
      keepAlive: true
    },
    reconnectTries: 30
  },
  mongos: {
    socketOptions: {
      socketTimeoutMS: 0,
      keepAlive: true
    },
    reconnectTries: 30
  }
});

在mongoose v5.x中,你可以在顶级声明这些选项,而不需要额外的嵌套。

// Equivalent to the above code
mongoose.connect(myUri, {
  socketTimeoutMS: 0,
  keepAlive: true,
  reconnectTries: 30
});

来源:官方文件http://mongoosejs.com/docs/connections.html

相关问题