(节点:63208)DeprecationWarning:不建议使用collection.ensureIndex。使用createIndexes代替

时间:2018-08-22 05:05:42

标签: node.js mongodb mongoose

此错误来自何处?我不在任何地方的Nodejs应用程序中使用ensureIndexcreateIndex。我正在使用纱线包管理器。

这是我在index.js中的代码

import express from 'express';
import path from 'path';
import bodyParser from 'body-parser';
import mongoose from 'mongoose';
import Promise from 'bluebird';

dotenv.config();
mongoose.Promise = Promise;
mongoose.connect('mongodb://localhost:27017/bookworm', { useNewUrlParser: true });

const app = express();

1 个答案:

答案 0 :(得分:36)

问题在于mongoose仍使用collection.ensureIndex,并应在不久的将来对其进行更新。为了摆脱此消息,您可以通过在package.json中使用5.2.8版本来降级(并删除所有缓存,最后的方法是使用 npm install mongoose@5.2.8 卸载它)。 ):

  

“猫鼬”:“ ^ 5.2.8”

编辑: 截至此编辑,Mongoose现在处于v5.4.13。根据他们的文档,这些是过时警告的修复方法...

mongoose.set('useNewUrlParser', true);
mongoose.set('useFindAndModify', false);
mongoose.set('useCreateIndex', true);
  

用updateOne(),updateMany()或replaceOne()替换update()

     

用deleteOne()或deleteMany()替换remove()。

     

用countDocuments()替换count(),除非您要计算整个集合中有多少个文档(无过滤器)。在后一种情况下,请使用EstimatedDocumentCount()。