【发布时间】:2023-02-26 18:25:24
【问题描述】:
const mongoose = require("mongoose");
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: "Good Fruit"
});
fruit.save();
const banana = new Fruit({
name: "banana",
rating: 9,
review: "Noice"
});
const mango = new Fruit({
name: "Mango",
rating: 10,
review: "best Fruit"
});
Fruit.insertMany([banana, mango], function (err) {
if (err) console.log(err);
else console.log("Inserted all!");
});
Fruit.find(function (err, fruits) {
if (err) console.log(err);
else {
mongoose.connection.close();
fruits.forEach((fruitdata) => {
console.log(fruitdata.name);
});
}
});
mongoose.connection.close() 在连接实际关闭之前需要将近 10-12 秒。我也试过 mongoose.disconnect() 但问题仍然存在。使用 async 函数和 await 键也没有区别。 我不知道出了什么问题。但根据我对以下 sn-p 的理解,错误处理需要时间。
Fruit.find(function (err, fruits) {
if (err) console.log(err);
else {
mongoose.connection.close();
fruits.forEach((fruitdata) => {
console.log(fruitdata.name);
});
}
});
如果我只是将 mongoose.connection.close() 或 mongoose.disconnect() 放在这个 sn-p 之上,连接将以毫秒为单位关闭,但是当放置在 .find 的回调函数中时,它需要 10-12 秒。
【问题讨论】:
-
mongoose.connection.close();.forEach()?? -
@JeremyThille 数据存储在 fruits 数组中。而且,现在我不想与猫鼬进一步互动,我打算关闭它。之后使用 forEach 循环,我刚刚通过点击 object.name 显示了一些特定数据。
-
是的,我知道您要做什么,但是
mongoose.connection.close();.forEach()完全无效。我看到你已经修好了。问题,你怎么知道关闭连接需要多长时间?完成后控制台中是否显示消息?因为在您的代码中,您只是执行mongoose.connection.close()而不进行日志记录或其他任何操作,所以我认为它一定是无声的。我很困惑你怎么知道需要多长时间。 -
@JeremyThille 是的,发帖时有错字,但实际代码中没有。抱歉。至于 timimg.,当我进入每个文档的 .names 时,名称显示在我的终端中,但在此之后,提示符 ($) 符号会在 10-12 秒后出现,而不是尽快出现显示文档中的所有名称
-
嗯,但这很糟糕吗?即使它需要 10 秒,当然这很奇怪,但它不会以任何方式影响您的代码或您的应用程序,不是吗?其余代码在数据库连接关闭时运行良好
标签: javascript node.js database mongodb mongoose