您好,我已经创建了节点应用程序,它运行良好,但从最近 2 天开始,我收到了此错误我尝试升级猫鼬,但仍然相同的错误
弃用警告:
ensureIndex()
在猫鼬>= 4.12.0 中已弃用,请改用createIndex()
因此,我的应用程序已停止工作
这是我与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
});
有没有人对此有解决方案,提前感谢。
我终于通过遵循官方猫鼬文档非常简单地解决了这个问题。
基本上有一个标志可以通过连接选项传递,如下所示:
mongoose.connect(dbconfig.database, {
useCreateIndex: true
});
这删除了弃用警告消息,而无需进一步修改我的代码。
MongoStore 会导致此通知。请升级连接蒙戈
https://github.com/Automattic/mongoose/issues/5692
npm i connect-mongo@2.0.0 --save
您可以在连接上添加以下代码块:
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);
我已经将猫鼬版本升级到 4.9.9,现在我没有得到任何警告
遵循 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;