后端初学者使用Mongoose连接MongoDB时出现useFindAndModify无效报错如何解决
报错产生原因
Mongoose v6.0及以上版本已经全面废弃了useFindAndModify、useNewUrlParser、useUnifiedTopology、useCreateIndex等旧版本兼容配置项:
useFindAndModify在新版本中默认关闭,无需手动配置- 手动设置已废弃的配置项时,就会触发「无效选项」的报错
解决方法
- 第一步:直接删除代码中
mongoose.set("useFindAndModify", false);这一行即可 - 第二步:修正你代码中存在的其他语法错误:
- 缺少express导入语句,需要在头部添加
import express from "express"; express.json和express.urlencoded的配置参数写错,正确参数为extended: true而非extender: true- 连接字符串和PORT定义拼接错误,需要拆分两条语句单独定义
- Mongoose 6+版本无需再传
useNewUrlParser和useUnifiedTopology配置项,可直接删除
- 缺少express导入语句,需要在头部添加
修正后完整代码
import mongoose from "mongoose"; import cors from "cors"; import express from "express"; const app = express(); app.use(express.json({ limit: "30mb", extended: true })); app.use(express.urlencoded({ limit: "30mb", extended: true })); app.use(cors()); const CONNECTION_URL = "mongodb+srv://priyanshu74:****@cluster0.2l3k1.mongodb.net/myFirstDatabase?retryWrites=true&w=majority"; const PORT = process.env.PORT || 5000; mongoose .connect(CONNECTION_URL) .then(() => app.listen(PORT, () => console.log(`server running on port: ${PORT}`)) ) .catch((error) => console.log(error.message));
如果你需要兼容旧版本业务逻辑,可以手动将Mongoose版本降级到5.x系列,执行npm install mongoose@5即可保留原有配置写法
内容的提问来源于stack exchange,提问作者Priyanshu
相关产品推荐
相关产品推荐

