DeprecationWarning:`sureIndex()`在Mongoose> = 4.12.0中已弃用,请改用`createIndex()`

时间:2017-10-08 09:10:47

标签: mongodb mongoose

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

有没有人解决这个问题, 提前完成。

5 个答案:

答案 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;