首次使用MongoDB与Mongoose遇错误:peoples.insertOne()缓冲超时10000ms
解决Mongoose操作缓冲超时问题
你遇到的MongooseError: Operation peoples.insertOne() buffering timed out after 10000ms错误,核心原因是数据库连接还没建立完成,就执行了数据保存操作——Mongoose的connect是异步方法,代码里直接在调用connect后就执行people.save(),此时连接可能还在建立中,导致操作被缓冲后超时。
修复方案
可以通过以下两种方式确保连接完成后再执行数据库操作:
方式1:使用async/await
import mongoose from "mongoose"; mongoose.set("strictQuery", false); // 用async函数包裹逻辑 async function start() { try { await mongoose.connect("mongodb://localhost:27017/peopleDB", { useNewUrlParser: true }); console.log("MongoDB is connected"); const peopleSchema = new mongoose.Schema({ name: String, age: Number, }); const People = mongoose.model("People", peopleSchema); const people = new People({ name: "John", age: 37 }); await people.save(); console.log("数据保存成功"); } catch (err) { console.error("连接或保存失败:", err); } } start();
方式2:使用Promise的then方法
import mongoose from "mongoose"; mongoose.set("strictQuery", false); mongoose.connect("mongodb://localhost:27017/peopleDB", { useNewUrlParser: true }) .then(() => { console.log("MongoDB is connected"); const peopleSchema = new mongoose.Schema({ name: String, age: Number, }); const People = mongoose.model("People", peopleSchema); const people = new People({ name: "John", age: 37 }); return people.save(); }) .then(() => { console.log("数据保存成功"); }) .catch(err => { console.error("连接或保存失败:", err); });
额外注意事项
- 确保本地MongoDB服务已经启动,端口
27017正常监听 - 如果你使用的是Mongoose 6及以上版本,
useNewUrlParser已经是默认配置,可以不用显式传入
内容的提问来源于stack exchange,提问作者G raj Kumar
相关产品推荐
相关产品推荐

