我只是从我的app.js
中创建一个名为Fruits的数据库,并使用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
时,都会收到DeprecationWarning。即使我尝试使用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
然后第二个错误也继续fruits.insertOne()。
正因为如此,我的MongoDB数据库没有得到更新。
test> show dbs
admin 40.00 KiB
config 108.00 KiB
local 40.00 KiB
shopDB 72.00 KiB
我只是想修复这个错误。但是我不知道在哪里修复这个错误。错误的第二部分似乎来自nodule_modules本身。我该如何修复这个错误?
9条答案
按热度按时间liwlm1x91#
或
jbose2ul2#
gev0vcfq3#
欢迎来到StackOverflow。
弃用警告与您收到的错误没有任何关系。尝试删除整个
mongoose.set('strictQuery', true);
行,您将得到相同的结果。尝试将
localhost
替换为127.0.0.1
,并让我知道它是否有效。另外,您使用的是哪个版本的mongoose和MongoDB?
flseospp4#
仅用一行删除此警告
单线
mutmk8jj5#
第一个月
mongoose.set('strictQuery', true);
即使包含
strictQuery
行,上面也会给出警告,解决方案只是将strictQuery
行放在mongoose.connect
之前mongoose.set('strictQuery', true);
mongoose.connect(process.env.MONGO_URL);
那就成功了!
shstlldc6#
第一个错误的解决方案。
您可以参考命令行指令本身,只是在使用mongoose之前使用建议的行。
只需更换:
收件人:
pu82cl6c7#
我想给现有的答案多一点背景。
当
strict
选项设置为true时,Mongoose将确保只有在Schema中指定的字段才会保存在数据库中,而所有其他字段都不会保存(如果发送了其他字段)。现在,默认情况下启用此选项,但在Mongoose v7中,默认情况下将更改为false,这意味着所有字段都将保存在数据库中,即使其中一些字段没有在Schema模型中指定。
因此,如果您希望拥有严格的Schemas,并且只在数据库中存储模型中指定的内容,那么从Mongoose v7开始,您必须手动将
strict
选项设置为true。如果你不想这样,你不需要指定任何东西,因为默认情况下它会被设置为false,所以你可以直接连接到数据库,就这样。
2izufjch8#
我在Udemy上也学了同样的课程,哈菲兹的解决方案对我很有效。
只需更换
与
r1zk6ea19#
我想我们在做同样的事情。我只是忽略了 Mongoose 的反对警告。