如何修复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
相关产品推荐
相关产品推荐

