【问题标题】:MongooseError: Operation `orders.deleteMany()` buffering timed out after 10000msMongooseError:操作 `orders.deleteMany()` 缓冲在 10000 毫秒后超时
【发布时间】:2021-04-12 10:29:02
【问题描述】:

当我使用 npm run seeder 运行我的应用程序时
然后我遇到了这个错误 我已经仔细检查了我的数据库连接,没关系。 另外,我检查了我的 ordermodels 文件也可以。我用过 MongoDB 指南针没有任何问题。我不知道为什么显示buffering timed out

MongooseError: Operation `orders.deleteMany()` buffering timed out after 10000ms

seeder.js

    import mongoose from "mongoose";
    import dotenv from "dotenv";
    import colors from "colors";
    import users from "./data/users.js";
    import products from "./data/products.js";
    import User from "./models/userModel.js";
    import Product from "./models/productModel.js";
    import Order from "./models/orderModel.js";
    import connectDB from "./config/db.js";
    
    dotenv.config();
    connectDB();
    
    const importData = async () => {
      try {
        await Order.deleteMany();
        await Product.deleteMany();
        await User.deleteMany();
    
        const createUsers = await User.insertMany(users);
        const adminUser = createUsers[0]._id;
        const sampleProducts = products.map((product) => {
          return { ...product, user: adminUser };
        });
        await Product.insertMany(sampleProducts);
    
        console.log("Data Imported".green.inverse);
        process.exit();
      } catch (error) {
        console.error(`${error}`.red.inverse);
        process.exit(1);
      }
    };
    
    const DeleteData = async () => {
      try {
        await Order.deleteMany();
        await Product.deleteMany();
        await User.deleteMany();
    
        console.log("Data Deleted".red.inverse);
        process.exit();
      } catch (error) {
        console.error(`${error}`.red.inverse);
        process.exit(1);
      }
    };
    
    if (process.argv[2] === "-d") {
      DeleteData();
    } else {
      importData();
    }

【问题讨论】:

  • 你能告诉我们connectDB()函数吗?可能是与猫鼬的连接问题
  • 谢谢,我的问题已经解决了,其实是网络连接的问题

标签: node.js mongodb express mongoose


【解决方案1】:

使用以下代码连接到 mongodb

const mongoose = require('mongoose')
mongoose.connect(url, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true })

之后,您应该删除 node_module 文件夹和所有 .json 文件并重新安装 mongoose 并使用 npm update

【讨论】:

  • 欢迎来到 SO!这解决了OP的问题吗?如果是,请点赞并接受答案
  • 为什么以及如何解决?
【解决方案2】:

我遇到了同样的问题,但我设法解决了。

所以在package.json 中,我添加了scripts 部分:

"data:import": "node backend/seeder",
"data:destroy": "node backend/seeder -d",

然后:

npm run data:import 

尝试了几次后,我在控制台中收到了Data Imported 消息。

注意:我没有卸载任何 node_modules。

【讨论】:

    【解决方案3】:

    我有同样的问题,我刚刚做了一个研究,我发现您的 MongoDB 正在尝试在连接数据库之前执行函数 User.deleteMany()

    connectDB() 之前放一个等待;

    await connectDB();
    

    【讨论】:

      【解决方案4】:

      在 mongoose.connect(DB,{}) 中写入 useFindAndModify:true,因为默认情况下它是 false 并且您正在尝试从数据库中删除某些内容。 所以,就这样写吧

      mongoose.connect(DB,{
          useNewUrlParser:true,
          useCreateIndex:true,
          useFindAndModify:true,
          useUnifiedTopology: true
      })
      
      

      【讨论】:

        【解决方案5】:

        您可以将 connectDB() 移动到 importData() 和 deleteData()。并在 connectDB() 之前添加 await。像这样:

        const importData = async () => {
            try {
                await connectDB();
                //...
            }
        }
        

        它对我有用。

        【讨论】:

          猜你喜欢
          • 2021-08-23
          • 2021-11-15
          • 2021-12-08
          • 2021-04-01
          • 2021-06-30
          • 2021-04-01
          • 2021-04-11
          • 1970-01-01
          • 2022-11-28
          相关资源
          最近更新 更多