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

如何修复Mongoose中关于strictQuery的弃用警告

解决Mongoose strictQuery弃用警告

你遇到的是Mongoose版本迭代的兼容性警告:Mongoose 6.x中strictQuery默认值为true,但Mongoose 7会将其默认值改为false,因此启动时触发该提示。以下两种方式可解决此警告:

方案1:适配Mongoose 7默认行为(推荐)

在数据库连接前添加mongoose.set('strictQuery', false);,提前适配未来版本的默认规则,避免后续升级出现兼容性问题:

修改后的server.js代码:

const dotenv = require('dotenv');
const mongoose = require('mongoose');
const express = require('express'); // 补全原代码遗漏的express引入
const app = express();
dotenv.config();

// 添加strictQuery配置
mongoose.set('strictQuery', false);

mongoose
  .connect(process.env.MONGODB_URI)
  .then(() => {
    console.log('connected to db');
  })
  .catch((err) => {
    console.log(err.message);
  });

const port = process.env.PORT || 5000;
app.listen(port, () => {
  console.log(`serve at http://localhost:${port}`);
});

方案2:维持当前版本行为,抑制警告

若想保留Mongoose 6.x的默认逻辑(查询时自动过滤Schema未定义的字段),可设置strictQuery为true直接消除警告:

修改后的server.js关键片段:

dotenv.config();

// 添加strictQuery配置
mongoose.set('strictQuery', true);

mongoose
  .connect(process.env.MONGODB_URI)
  // 其余代码保持不变

关于strictQuery的说明

  • 设置为true:查询条件中包含Schema未定义的字段时,会被自动过滤,不会发送至MongoDB
  • 设置为false:查询条件中的Schema外字段会被保留,直接发送至MongoDB执行查询

内容的提问来源于stack exchange,提问作者DummyData1590

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:50:19