MongoParseError:不支持选项 useCreateIndex、useFindAndModify

vii*_*iii 1 mongodb

我试图运行它,它说像标题一样的错误。这是我的代码:


const URI = process.env.MONGODB_URL;

mongoose.connect(URI, {
   useCreatendex: true, 
   useFindAndModify: false, 
   useNewUrlParser: true, 
   useUnifiedTopology: true 
}, err => {
   if(err) throw err;
   console.log('Connected to MongoDB!!!')
})
Run Code Online (Sandbox Code Playgroud)

我在 .env 中设置了 MONGODB_URL :

MONGODB_URL = mongodb+srv://username:<password>@cluster0.accdl.mongodb.net/website?retryWrites=true&w=majority
Run Code Online (Sandbox Code Playgroud)

如何解决?

小智 40

我也遇到同样的问题,但如果您删除 useCreateIndex、useFindAndModify 它将解决问题,只需编写:

const URI = process.env.MONGODB_URL;

mongoose.connect(URI, {

useNewUrlParser: true, 

useUnifiedTopology: true 

}, err => {
if(err) throw err;
console.log('Connected to MongoDB!!!')
});
Run Code Online (Sandbox Code Playgroud)

这对我有用。


小智 29

不再有弃用警告选项

useNewUrlParseruseUnifiedTopologyuseFindAndModifyuseCreateIndex不再受支持的选项。Mongoose 6 的行为始终表现为useNewUrlParseruseUnifiedTopology、 和useCreateIndex为 true,而useFindAndModify为 false。请从您的代码中删除这些选项。

src --> https://mongoosejs.com/docs/migration_to_6.html#no-more-deprecation-warning-options

// No longer necessary:
mongoose.set('useFindAndModify', false);

await mongoose.connect('mongodb://localhost:27017/test', {
  useNewUrlParser: true, // <-- no longer necessary
  useUnifiedTopology: true // <-- no longer necessary
});
Run Code Online (Sandbox Code Playgroud)


小智 12

我有同样的问题。因斯塔德

mongoose.connect(URI, {
   useCreatendex: true, 
   useFindAndModify: false, 
   useNewUrlParser: true, 
   useUnifiedTopology: true 
}, err => {
   if(err) throw err;
   console.log('Connected to MongoDB!!!')
})
Run Code Online (Sandbox Code Playgroud)

尝试这个:

mongoose.connect(URI,
    err => {
        if(err) throw err;
        console.log('connected to MongoDB')
    });
Run Code Online (Sandbox Code Playgroud)


小智 10

该错误是因为新版本的mongoose ie版本6.0.6。

正如文档所说:

不再有弃用警告选项

useNewUrlParseruseUnifiedTopologyuseFindAndModifyuseCreateIndex不再受支持的选项。Mongoose 6 的行为始终表现为useNewUrlParseruseUnifiedTopology、 和useCreateIndex为 true,而useFindAndModify为 false。请从您的代码中删除这些选项。

此外,新版本还有一些重大变化。

有关更多信息,请访问https://mongoosejs.com/docs/migration_to_6.html#no-more-deprecation-warning-options

import mongoose from 'mongoose';
    
    const db = process.env.MONGOURI;
    
    const connectDB = async () => {
      try {
        console.log(db);
        await mongoose.connect(`${db}`, {
          useNewUrlParser: true,
          useUnifiedTopology: true,
        });
        console.log('MongoDB connected');
      } catch (error) {
        console.log(error.message);
        process.exit(1);
      }
    };
    
    
    export default connectDB;
Run Code Online (Sandbox Code Playgroud)


小智 9

在此输入图像描述

当我评论 useNewUrlParser 和 useCreateIndex 时,它对我有用。

  • 正如目前所写的,您的答案尚不清楚。请[编辑]添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以[在帮助中心](/help/how-to-answer)找到有关如何写出好的答案的更多信息。 (2认同)

Joe*_*Joe 8

来自猫鼬 6.0文档

useNewUrlParser、useUnifiedTopology、useFindAndModify 和 useCreateIndex 不再受支持。Mongoose 6 总是表现为好像 useNewUrlParser、useUnifiedTopology 和 useCreateIndex 为真,而 useFindAndModify 为假。请从您的代码中删除这些选项。

  • 这些选项是否完全删除或替换为其他代码? (3认同)

Moh*_*eid 7

删除usecreateindexusefindandmodify选项

const URI = process.env.MONGODB_URL;

mongoose.connect(URI, {
   useNewUrlParser: true, 
   useUnifiedTopology: true 
}, err => {
   if(err) throw err;
   console.log('Connected to MongoDB!!!')
})
Run Code Online (Sandbox Code Playgroud)


小智 7

在新的 mongodb 版本中,您不必使用这些: useCreateIndex: true, useFindAndModify: false, useNewUrlParser: true, useUnifiedTopology: true


小智 5

选项useCreateIndex,useFindAndModify在 v6 版本中不支持

try {
    await mongoose.connect(process.env.MONGODB_URL, {
        useNewUrlParser: true,
        useUnifiedTopology: true,
    });
    console.log("Connect successfully!");
} catch (error) {
    console.log("Connect Failure!", error.message);
}
Run Code Online (Sandbox Code Playgroud)