사용 중지 경고: Mongoose: Mongoose 7에서 'trictQuery' 옵션이 기본적으로 'false'로 다시 전환됩니다.
나는 단지 나의 집에서 과일이라는 데이터베이스를 만들고 있습니다.app.js
Mongoose를 사용하여 데이터베이스를 MongoDB에 연결합니다.
const mongoose = require("mongoose");
mongoose.connect("mongodb://localhost:27017/fruitsDB", {useNewUrlParser: true});
mongoose.set('strictQuery', false);
const fruitSchema = new mongoose.Schema({
name: String,
rating: Number,
review: String
});
const Fruit = mongoose.model("Fruit", fruitSchema);
const fruit = new Fruit({
name: "Apple",
rating: 7,
review: "Taste Good"
});
fruit.save();
내가 노력할 때마다node app.js
사용 중지 경고가 표시됩니다.제가 사용해 봤는데도mongoose.set('strictQuery', true);
동일한 오류가 다음과 같이 계속됩니다.
(node:15848) [MONGOOSE] DeprecationWarning: Mongoose: the `strictQuery` option w
ill be switched back to `false` by default in Mongoose 7. Use `mongoose.set('str
ictQuery', 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)
D:\Web Development\FruitsProject\node_modules\mongoose\lib\drivers\node-mongodb-
native\collection.js:158
const err = new MongooseError(message);
^
MongooseError: Operation `fruits.insertOne()` buffering timed out after 10000ms
at Timeout.<anonymous> (D:\Web Development\FruitsProject\node_modules\mongoo
se\lib\drivers\node-mongodb-native\collection.js:158:23)
at listOnTimeout (node:internal/timers:564:17)
at process.processTimers (node:internal/timers:507:7)
Node.js v18.12.1
그리고 두 번째 오류도 계속됩니다. 하나()를 삽입합니다.
이로 인해 MongoDB 데이터베이스가 업데이트되지 않습니다.
test> show dbs
admin 40.00 KiB
config 108.00 KiB
local 40.00 KiB
shopDB 72.00 KiB
저는 단지 이 오류를 고치고 싶습니다.하지만 저는 이 오류를 어디서 수정해야 할지 모르겠습니다.오류의 두 번째 부분은 node_modules 자체에서 발생한 것으로 보입니다.이 오류를 어떻게 해결할 수 있습니까?
mongoose.set("strictQuery", false);
mongoose.connect(process.env.MONGO_URL);
OR
mongoose.set("strictQuery", false);
mongoose.connect(process.env.MONGO_URL, () => {
console.log("Connected to MongoDB");
});
const connectDB = async () => {
try {
mongoose.set('strictQuery', false);
await mongoose.connect(db, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
console.log('MongoDB Connected...');
} catch (err) {
console.error(err.message);
// make the process fail
process.exit(1);
}
저는 기존 답변에 조금 더 맥락을 부여하고 싶습니다.
그 때.strict
옵션이 true로 설정되어 있으면 Mongoose는 스키마에 지정된 필드만 데이터베이스에 저장되고 다른 모든 필드는 저장되지 않습니다(다른 필드가 전송되는 경우).
현재 이 옵션은 기본적으로 활성화되어 있지만 Mongoose v7에서는 기본적으로 false로 변경됩니다.즉, 일부 필드가 스키마 모델에 지정되지 않은 경우에도 모든 필드가 데이터베이스에 저장됩니다.
따라서 엄격한 스키마를 사용하고 모델에 지정된 것만 데이터베이스에 저장하려면 Mongoose v7부터 설정해야 합니다.strict
true 옵션을 수동으로 선택합니다.
mongoose.set('strictQuery', true);
mongoose.connect(Config.mongo_db_connection_string);
기본적으로 false로 설정되므로 이 옵션을 사용하지 않으려면 아무것도 지정할 필요가 없습니다.데이터베이스에 연결하면 됩니다.
mongoose.connect(Config.mongo_db_connection_string);
const mongoose = require("mongoose");
mongoose.set('strictQuery', false);
mongoose.connect("mongodb://localhost:27017/fruitsDB", { useNewUrlParser: true });
const fruitSchema = new mongoose.Schema({
name: String,
rating: Number,
review: String
});
const Fruit = mongoose.model("Fruit", fruitSchema);
const fruit = new Fruit({
name: "Apple",
rating: 7,
review: "Taste Good"
});
fruit.save();
첫 번째 오류에 대한 해결책
명령줄 명령어 자체를 참조할 수 있습니다.Mongoose를 사용하기 전에 제안된 라인을 사용하면 됩니다.
간단히 대체:
mongoose.connect("mongodb://localhost:27017/fruitsDB", {useNewUrlParser: true});
받는 사람:
mongoose.set('strictQuery', false);
mongoose.connect("mongodb://localhost:27017/fruitsDB", {useNewUrlParser: true});
한 줄만 사용하여 이 경고
mongoose.set('strictQuery', true);
mongoose.connect(process.env.MONGO_URL)
사용되지 않는 경고는 사용자가 받는 오류와 아무런 관련이 없습니다.전체를 제거해 보십시오.mongoose.set('strictQuery', true);
라인, 그리고 당신은 같은 결과를 얻을 것입니다.
교체 시도localhost
와 함께127.0.0.1
:
mongoose.connect('mongodb://127.0.0.1/fruitsDB')
mongoose.connect(process.env.MONGO_URL);
mongoose.set('strictQuery', true);
위의 유언은 당신이 그것을 포함하더라도 당신에게 경고를 줄 것입니다.strictQuery
라인. 해결책은 단지 그것을 배치하는 것입니다.strictQuery
앞줄.mongoose.connect
:
mongoose.set('strictQuery', true);
mongoose.connect(process.env.MONGO_URL);
그러면 효과가 있어요!
사용:
mongoose.set('strictQuery', false);
mongoose.connect("mongodb://localhost:27017/mydb", { useNewUrlParser: true })
이 경고 메시지는 Mongoose 라이브러리가 현재 "strictQuery" 옵션을 사용하고 있으며 Mongoose 7에서 이 옵션이 기본적으로 "false"로 다시 전환됨을 나타냅니다.Mongoose는 이 옵션을 사용하여 엄격한 쿼리 구문을 적용할지 여부를 결정합니다."false"로 설정하면 Mongoose는 쿼리 조건이 여러 속성과 일치하도록 허용합니다.
이 경고를 해결하려면 다음 행을 사용하여 코드에서 "strictQuery"를 "false"로 설정할 수 있습니다.
mongoose.set('strictQuery', false);
또는 엄격한 쿼리 구문을 계속 사용하려면 "strictQuery"를 "true"로 설정하여 다음 경고를 표시하지 않을 수 있습니다.
mongoose.set('strictQuery', true);
Mongoose 7이 출시되기 전에 이 변경 사항에 따라 코드를 업데이트하는 것이 좋습니다.
예:
const mongoose = require("mongoose");
mongoose.set('strictQuery', false);
mongoose.connect("mongodb://localhost:27017/test", {
useNewUrlParser: true
});
언제든지 "localhost"를 변경할 수 있습니다.
mongoose.connect('mongodb://localhost:27017/fruitsDB');
로.
mongoose.connect("mongodb://127.0.0.1:27017/fruitsDB");
연결이 설정되면 다음을 수행합니다.
mongoose.set('strictQuery',false);
저도 같은 문제에 직면했습니다.
자, 이 사진에서 해결책을 찾을 수 있습니다.
단순히 "가져오기 섹션"에 이 코드를 추가하면 됩니다.
-
몽구스set('tricQuery', true);
const app=syslog;
conmongoose = required "mongoose";
const express= required는 ';
몽구스set('tricQuery', true);
저는 우데미에 대해서도 같은 과정을 배우고 있습니다.하페즈의 해결책은 저에게 효과가 있었습니다.
간단히 교체
mongoose.connect('mongodb://localhost:27017/fruitsDB', {useNewUrlParser: true});
와 함께
mongoose.set('strictQuery', true);
mongoose.connect('mongodb://127.0.0.1/fruitsDB');
mongoose.connect('mongodb://0.0.0.0/fruitsDB')
우리는 같은 코스를 하고 있는 것 같아요.나는 Mongoose의 가치를 떨어뜨리는 경고를 무시할 뿐입니다.
네, 이 코드 라인을 가장 중요하게 생각하시면 됩니다.
mongoose.set( "strictQuery", false );
mongoose.connect( "mongodb://0.0.0.0:27017/NewDB", () => {
console.log(`Connected to MongoDB`)
});
배를 합니다.strictQuery
이 문제를 방지하기 위해 연결 선 앞에 선을 표시합니다.
const mongoose = require("mongoose");
mongoose.set('strictQuery', false);
mongoose.connect(
"mongodb://localhost:27017/fruitsDB",
{
useNewUrlParser: true
}
);
저도 같은 문제가 있었습니다..require
및 use ) 를 사용합니다.dotenv
MongoDB 연결 문 앞에 있습니다.그것은 나에게 효과가 있었다.
const dotenv = require('dotenv');
dotenv.config({path: 'config.env'})
// MongoDB connection
connectDB();
const mongoose = require("mongoose");
const DB = process.env.MONGO_URL;
const connectedDB = async () => {
try {
mongoose.set("strictQuery", true);
const conn = await mongoose.connect(DB);
console.log(`mongoDB connection : ${conn.connection.host}`.cyan.underline);
} catch (err) {
console.log(`No connection : ${err}`.red.underline);
}
};
module.exports = connectedDB;
const mongoose = require("mongoose");
mongoose.set('strictQuery', false);
mongoose.connect("mongodb://127.0.0.1:27017/fruitsDB");
const fruitSchema = new mongoose.Schema({
name: String,
rating: Number,
review: String
});
const Fruit = mongoose.model("Fruit", fruitSchema);
const fruit = new Fruit({
name: "Apple",
rating: 7,
review: "Pretty solid!"
})
fruit.save();
적절한 방법
const mongoose = require("mongoose");
mongoose.set("strictQuery", true);
mongoose
.connect("mongodb://0.0.0.0:0/test", {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => {
console.log("Connected!");
})
.catch((err) => {
console.log("oh no error");
console.log(err);
});
import express from 'express';
import bodyParser from 'body-parser';
import mongoose from 'mongoose';
import cors from 'cors';
const app = express();
app.use(bodyParser.json({ limit: "30mb", extended: true }));
app.use(bodyParser.urlencoded({ limit: "30mb", extended: true }));
app.use(cors());
const CONNECTION_URL =
"mongodb+srv://<username>:<password>@cluster0.y3v2mwo.mongodb.net/?
retryWrites=true&w=majority";
const PORT = process.env.PORT || 5000;
mongoose.set("strictQuery", false);
mongoose.connect(CONNECTION_URL)
.then(() => app.listen(PORT, () => console.log(`Server running on port: ${PORT}`)))
.catch(error => console.log(error.message));
mongoose.set( "strictQuery", false );
mongoose.connect( "mongodb://0.0.0.0:27017/NewDB", () => {
console.log(`Connected to MongoDB`)
});
포스터 덕분에 몇 번의 시도 끝에 저에게 더 이상 사용하지 말라는 경고가 해결되었습니다.
// Mongoose setup //
const PORT = 8000;
mongoose
.connect(
process.env.MONGO_URL,
{
useNewUrlParser: true,
useUnifiedTopology: true,
},
**mongoose.set('strictQuery', false)**
)
.then(() => {
app.listen(PORT, () => console.log(`Server port: ${PORT}`));
})
.catch((err) => console.log(`${err} did not connect`));
언급URL : https://stackoverflow.com/questions/74747476/deprecationwarning-mongoose-the-strictquery-option-will-be-switched-back-to
'sourcecode' 카테고리의 다른 글
Xcode 프로젝트에 시뮬레이터 목록이 표시되지 않음 (0) | 2023.05.13 |
---|---|
파이썬에 디렉터리가 있는지 확인하려면 어떻게 해야 합니까? (0) | 2023.05.13 |
Xcode + 모든 중단점 제거 (0) | 2023.05.13 |
TesseractNotFound 오류를 해결하려면 어떻게 해야 합니까? (0) | 2023.05.13 |
NSLocalizedString을 사용하는 모범 사례 (0) | 2023.05.13 |