【问题标题】:mongoose.connection.close() or mongoose.disconnect() takes ~10-12 seconds before the connection actually closesmongoose.connection.close() 或 mongoose.disconnect() 在连接实际关闭前需要约 10-12 秒
【发布时间】: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


【解决方案1】:

我之前遇到过这个问题,通过这个流程方法解决了:

mongoose.connection.close(function() {
  process.exit();
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 2012-12-16
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多