You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

后端初学者使用Mongoose连接MongoDB时出现useFindAndModify无效报错如何解决

报错产生原因

Mongoose v6.0及以上版本已经全面废弃了useFindAndModify、useNewUrlParser、useUnifiedTopology、useCreateIndex等旧版本兼容配置项:

  • useFindAndModify在新版本中默认关闭,无需手动配置
  • 手动设置已废弃的配置项时,就会触发「无效选项」的报错
解决方法
  • 第一步:直接删除代码中mongoose.set("useFindAndModify", false);这一行即可
  • 第二步:修正你代码中存在的其他语法错误:
    1. 缺少express导入语句,需要在头部添加import express from "express";
    2. express.json和express.urlencoded的配置参数写错,正确参数为extended: true而非extender: true
    3. 连接字符串和PORT定义拼接错误,需要拆分两条语句单独定义
    4. Mongoose 6+版本无需再传useNewUrlParser和useUnifiedTopology配置项,可直接删除
修正后完整代码
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 03:30:03