Nodejs 导出 returns 猫鼬插入未定义
Nodejs exports returns undefined on mongoose Insertion
我通过组织为模块结构创建了 nodejs 应用程序,我面临的问题是 mongodb 插入 return 来自我的一个控制器的未定义值,我发现的问题是我的异步功能不会等待完成我的 mongodb 操作但是我找不到解决方案,下面给出了我的路由和控制器代码
route.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});
}
});
controller.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;
}
});
}
你不应该 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;
}
};
我通过组织为模块结构创建了 nodejs 应用程序,我面临的问题是 mongodb 插入 return 来自我的一个控制器的未定义值,我发现的问题是我的异步功能不会等待完成我的 mongodb 操作但是我找不到解决方案,下面给出了我的路由和控制器代码
route.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});
}
});
controller.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;
}
});
}
你不应该 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;
}
};