当我用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();
}
6条答案
按热度按时间t9aqgxwy1#
我也有同样的问题,我刚刚做了一项研究,我发现你的MongoDB试图在数据库连接之前执行函数
User.deleteMany()
。只需在
connectDB()
之前放置一个await;sxpgvts32#
=(((((=(((((((((((((((((
请尝试{
} catch(错误){
}
};
导入数据();
wdebmtf23#
使用以下代码连接到mongodb
之后,您应该删除node_module文件夹和所有的.json文件,重新安装mongoose并使用
npm update
3htmauhk4#
我也遇到过同样的问题,但我设法解决了。
所以在
package.json
中,在scripts
部分我添加了:然后道:
在尝试了几次之后,我在控制台中得到了
Data Imported
消息。注意:我没有卸载任何node_modules。
a14dhokn5#
在mongoose.connect(DB,{})中写入useFindAndModify:true,因为默认情况下它是false,而您正试图从数据库中删除某些内容。
hk8txs486#
您可以将connectDB()移动到importData()和deleteData()中,并在connectDB()之前添加await。如下所示:
对我很有效。