如何修复有关“strictQuery”的 Mongoose 弃用警告

Dum*_*590 19 mongoose mongodb node.js deprecation-warning

当我开始构建后端服务器时,我收到此弃用警告,但它显示我已连接到数据库。

文件server.js

const dotenv = require('dotenv');
const mongoose = require('mongoose');
const app = express();
dotenv.config();

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}`);
});
Run Code Online (Sandbox Code Playgroud)

文件package.json

{
  "name": "backend",
  "version": "1.0.0",
  "description": "backend",
  "main": "server.js",
  "scripts": {
    "start": "node server",
    "dev": "nodemon server"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "dotenv": "^16.0.3",
    "express": "^4.18.2",
    "mongoose": "^6.8.0"
  },
  "devDependencies": {
    "nodemon": "^2.0.20"
  }
}
Run Code Online (Sandbox Code Playgroud)

这是 Mongoose 弃用警告:

Mongoose 弃用警告的屏幕截图

表明:

[MONGOOSE] DeprecationWarning: Mongoose: the `strictQuery` option will be switched back to `false` by default in Mongoose 7. 
Use `mongoose.set('strictQuery', false);` if you want to prepare for this change. 
Or use `mongoose.set('strictQuery', true);` to suppress this warning.
(Use `node --trace-deprecation ...` to show where the warning was created)
Run Code Online (Sandbox Code Playgroud)

Luc*_*ini 34

引入此警告是为了通知用户 Mongoose 7 中将引入默认值 的更改strictQuery
\n它的默认值将恢复为false

\n

您可以将strictQuery\xc2\xa0 选项设置为true\xc2\xa0 以抑制警告:

\n
const dotenv = require(\'dotenv\');\nconst mongoose = require(\'mongoose\');\nconst app = express();\ndotenv.config();\n\nmongoose.set(\'strictQuery\', true);\n
Run Code Online (Sandbox Code Playgroud)\n

false或者,如果您想覆盖当前的,则将标志设置为\xc2\xa0strictQuery行为并为新版本做好准备,

\n
const dotenv = require(\'dotenv\');\nconst mongoose = require(\'mongoose\');\nconst app = express();\ndotenv.config();\n\nmongoose.set(\'strictQuery\', false);\n
Run Code Online (Sandbox Code Playgroud)\n

不管怎样,警告应该消失。

\n

有关为什么默认情况下strictQuery\xc2\xa0 将返回到false\xc2\xa0 的更多信息,请参阅此处
\n更多信息请strictQuery参见此处

\n