我目前正在使用 MongoDB 和 Express 創建一個新的 API,并且我目前遇到了這個問題“訊息”:
“errorMongooseError:操作
userinfos.insertOne()緩沖在 10000 毫秒后超時”
他是我設定 API 呼叫的方式:
const express=require('express');
const router=express.Router();
const Userinfo=require("../Models/Userinfo")
router.get('/',(req,res)=>{
res.send("we are Post")
});
router.get('/Specic', async(req,res)=>{
try{
const data=await Userinfo.find();
console.log(data);
res.json(data)
}
catch(err)
{
res.json({message:err})
}
})
router.post("/",(req,res)=>{
const test= new Userinfo({
"Fname":req.body.Fname,
"Lname":req.body.Lname
});
console.log(test);
test.save().then(data=>{
res.json(data);
}).catch((err)=>{res.json({message:"error" err})})
})
module.exports=router;
像這樣定義模型 Userinfo.js
const mongoose=require('mongoose');
/*const PoistSchema=mongoose.Schema({
Fname:String,
Lname:String,
DOB:Date.now()
});*/
const PostSchema=mongoose.Schema({
Fname:{
type:String,
require:true
},
Lname:{
type:String,
require:true
},
DOB:{
type:String,
default:Date.now
},
});
module.exports=mongoose.model("Userinfo",PostSchema)
應用程式.js
const express=require('express');
const app=express();
const mongoose=require('mongoose');
require("dotenv/config");
const bodyParser=require("body-parser")
///Middlewares
//app.use(auth);
app.use(bodyParser.json());
const postroutes=require("./Routes/Posts");
app.use("/post",postroutes)
app.get('/',(req,res)=>{
res.send("we are om")
})
app.get('/posts',(req,res)=>{
res.send("we are Post")
})
try {
mongoose.connect(process.env.DBConnection,{useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex:true},()=>{
console.log("Sucess");
},(error)=>{
console.log(error);
});
console.log("ConnectedZZ")
} catch (error) {
console.log(error);
}
app.listen(3000);
有什么建議可以插入和獲取資料。雖然獲取資料沒有任何錯誤。
uj5u.com熱心網友回復:
出現此問題的原因可能有多種,但讓我們從以下幾點開始:
正如我們可以在檔案中閱讀的那樣
Mongoose 讓您可以立即開始使用您的模型,而無需等待 mongoose 與 MongoDB 建立連接。那是因為貓鼬在內部緩沖模型函式呼叫。這種緩沖很方便,但也是一個常見的混淆源。如果您在沒有連接的情況下使用模型,Mongoose 默認不會拋出任何錯誤。
所以看起來你model在建立連接之前被呼叫了。要處理此錯誤,您應該使用 .catch() 或 try/catch 和async/await。這應該可以解決您的問題。
這里有示例代碼片段:
(async () => {
try {
await mongoose.connect(process.env.DBConnection)
console.log('MongoDB connected!!');
} catch (err) {
console.log('Failed to connect to MongoDB', err);
}
})()
uj5u.com熱心網友回復:
您可以在呼叫 DB 呼叫之前確認 DB 是否正確。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/397019.html
標籤:javascript 节点.js MongoDB 表达 猫鼬
