你好我已经创建了节点应用程序它运行良好但是从最近2天我得到了这个错误 我试图升级mongoose但仍然是同样的错误
弃用警告:
createIndex()
在Mongoose&gt; = 4.12.0中已弃用,请改用<{1}}
因此我的应用程序已停止工作
这里是我与mongodb连接的代码
mongoose.connect(config.mongo.uri, {useMongoClient: true});
mongoose.connection.on('error', function (err) {
console.error(`MongoDB connection error: ${err}`);
process.exit(-1); // eslint-disable-line no-process-exit
});
有没有人解决这个问题, 提前完成。
答案 0 :(得分:3)
MongoStore导致此通知。请升级connect-mongo
https://github.com/Automattic/mongoose/issues/5692
npm i connect-mongo@2.0.0 --save
答案 1 :(得分:3)
我终于很简单地通过遵循official mongoose docs解决了这个问题。
基本上,有一个标志可以通过连接选项,如下所示:
mongoose.connect(dbconfig.database, {
useCreateIndex: true
});
这消除了过时警告消息,而无需进一步修改我的代码。
答案 2 :(得分:2)
您可以在连接上添加以下代码块:
mongoose.set("useCreateIndex", true);
那将解决您的问题。我这样使用它:
import mongoose from "mongoose";
mongoose.connect(`mongodb://localhost:27017/shopping`, {
useUnifiedTopology: true,
useNewUrlParser: true
})
.then(() => {
console.log("connection to mongodb successful ...");
})
.catch(error =>
console.log(`there is something wrong on mongoDB connection : ${error}`)
);
mongoose.set("useCreateIndex", true);
答案 3 :(得分:0)
我已将mongoose版本升级到4.9.9,现在我没有得到任何警告
答案 4 :(得分:0)
遵循Mongodb文档。您必须禁用autoIndex:false,然后调用User createIndexes函数。您需要像这样配置架构。
account_type: {
type: Number,
default: config.accountType.admin
},
account_status: {
type: Number,
default: config.accountStatus.unVerified
},
socket_id: String,
picture_url: {
type: String
}
},{
timestamps: true,
autoIndex: false
});
const User = mongoose.model('User', userSchema);
User.createIndexes();
// export model
module.exports = User;