我已安装最新版本的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]
我该如何解决这个问题?有什么想法吗?
答案 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
});