Node.js (节点:63208)弃用警告:collection.ensureIndex已弃用。改用createIndexes
这个错误是从哪里来的?我没有在Nodejs应用程序的任何地方使用Node.js (节点:63208)弃用警告:collection.ensureIndex已弃用。改用createIndexes,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,这个错误是从哪里来的?我没有在Nodejs应用程序的任何地方使用ensureIndex或createIndex。我使用纱线包装管理器 这是我在index.js中的代码 import express from 'express'; import path from 'path'; import bodyParser from 'body-parser'; import mongoose from 'mongoose'; import Promise from 'bluebird'; dotenv
ensureIndex
或createIndex
。我使用纱线包装管理器
这是我在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();
问题是它仍然使用collection.ensureIndex,应该在不久的将来由它们更新。要删除该消息,您可以在package.json中使用5.2.8版本进行降级(并删除任何缓存,最后一种方法是卸载该消息,然后使用npm安装mongoose@5.2.8):
“猫鼬”:“^5.2.8”
编辑:
截至本次编辑,Mongoose现在是v5.4.13。根据他们的文档,这些是对弃用警告的修复
mongoose.set('useNewUrlParser', true);
mongoose.set('useFindAndModify', false);
mongoose.set('useCreateIndex', true);
将update()替换为updateOne()、updateMany()或replaceOne()
将remove()替换为deleteOne()或deleteMany()
将count()替换为countDocuments(),除非要计算整个集合中的文档数(无筛选器)。在后一种情况下,使用estimatedDocumentCount()
. 读这个。这只是一个警告,没什么好担心的。点击重复问题的链接,在TLDR中,答案是添加mongoose.set('useCreateIndex',true)
在使用mongoose.connect之前,您可以使用{useCreateIndex:true}代码>我个人认为应该让它单独处理。这是一个弃用警告,您不应该太麻烦,因为代码仍在运行,并将在不久的将来升级。因此update()和remove()方法现在已被删除?使用此方法连接DB。connect(“您的DB URL,{useNewUrlParser:true,useCreateIndex:true});我在使用mongoose 5.9.5时遇到了同样的问题,我通过修改到:mongoose.connect(dbUri,{useUnifiedTopology:true,useCreateIndex:true,useNewUrlParser:true})的连接解决了这个错误@cr05s19xx不是真的。因为现在是2020年了,警告还在那里。我用的是猫鼬5.10.11