我通過組織模塊結構創建了nodejs應用程式,我面臨的問題是mongodb插入從我的一個控制器回傳未定義的值,我發現的問題是我的異步函式沒有等待完成我的mongodb操作但是我找不到解決方案,我的路由和控制器代碼如下
路由.js
const {
createEvent, editEvent
} = require('./controller');
router.post("/event/create", validateEventManage, isRequestValidated, async(req, res) => {
let data = {};
data.body = req.body;
try{
let event = await createEvent(req.body);
console.log(event) // returned undefined
data.event = event;
res.status(200).json(data);
}catch(error){
console.log(error)
res.status(200).json({error:error});
}
});
控制器.js
exports.createEvent = async(data) => {
// return "test" // This works correctly
const eventObj = {
name : data.name,
description : data.desc,
type : data.type,
startDate : new Date()
}
const event = await new Event(eventObj);
await event.save((error,event)=>{
if(error) {
return error;
}
if(event){
return event;
}
});
}
uj5u.com熱心網友回復:
await你不應該new Event建構式。
此外,由于您正在使用,async - await您可以從 中洗掉回呼save并try ... catch處理它的錯誤:
exports.createEvent = async (data) => {
// return "test" // This works correctly
const eventObj = {
name: data.name,
description: data.desc,
type: data.type,
startDate: new Date(),
};
try {
const event = new Event(eventObj);
await event.save();
return event;
} catch (error) {
return error;
}
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/485262.html
下一篇:MongoDb查詢回傳空物件
