弃用警告:"ensureIndex()"在 Mongoose >= 4.12.0 中已弃用,改用"createIndex()"



您好,我已经创建了节点应用程序,它运行良好,但从最近 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;

相关内容

最新更新