gpt4 book ai didi

mysql - 当 Sequelize.findAll 在另一个文件上时,导出函数不返回数据

转载 作者:行者123 更新时间:2023-11-29 15:32:12 25 4
gpt4 key购买 nike

我从请求查询中获取一些数据,并将请求的参数发送到MySQL数据库。当请求成功时,它返回数据(主 Controller 文件)并代表该数据,我需要调用其他模型类上存在的一些其他函数(通用方法文件) 。 通用方法文件功能也有一定的数据库依赖性。当我从通用方法文件进行调试时,它会按预期返回数据。但它不会从(主 Controller 文件)返回任何数据。我现在应该做什么?

我也尝试用这个方法来转换 async wait 但失败了。

主控文件

    const MenuData = require('../../models/common/MenuData');    
const MenuModel = require('../../models/menu/menuModel');

exports.listMenu = function(req, res) {
let menu_id = 0;

if(req.query.menuID){
menu_id=req.query.menuID;
MenuModel.findOne({
where:{
id:menu_id
}
}).then(menu=>{
if(menu){
let menu_details = MenuData.menuDetails(menu.dataValues);
if(menu_details){
return res.send({status: 200, message: menu_details});
}else{
return res.send({status: 302, message: "Data Not Found"});
}
}
}).catch(err =>{
return res.send('error: '+err);
});
}else{
return res.send('error: '+err);;
}
};

通用方法文件

    const MenuRelationalModel = require('../../models/menu/menuRelationModel');

exports.menuDetails=(content_data)=>{
let data = [];
if(content_data){
if(content_data.id && content_data.id == 1){
MenuRelationalModel.findAll({
where:{
menu_id:content_data.id
}
}).then(menu_all_data =>{
if(menu_all_data){
menu_all_data.map((menu_item,index)=>{
data.push(menu_item.dataValues);
})
return data;
}

}).catch(err =>{
data.push(err);
return data;

});
}

}
}

即将输出

   {
"status": 302,
"message": []
}

预期输出

   {
"status": 200,
"message": [
{
"id": 4,
"menu_id": 1,
"parent_page_id": 0,
"page_id": 1,
"item_title": "Ongoing",
"item_type": "category",
"parent_type": "category"
},
{
"id": 5,
"menu_id": 1,
"parent_page_id": 0,
"page_id": 2,
"item_title": "Completed",
"item_type": "category",
"parent_type": "category"
}
]
}

最佳答案

您的常用方法是异步的,因此您必须返回一个 promise 。

    const MenuRelationalModel = require('../../models/menu/menuRelationModel');

exports.menuDetails=(content_data)=>{
return new Promise((resolve, reject) => {
let data = [];
if(content_data){
if(content_data.id && content_data.id == 1){
MenuRelationalModel.findAll({
where:{
menu_id:content_data.id
}
}).then(menu_all_data =>{
if(menu_all_data){
menu_all_data.map((menu_item,index)=>{
data.push(menu_item.dataValues);
})
resolve(data);
}
}).catch(err =>{
data.push(err);
resolve(data);
});
}
} else {
resolve(data);
}
})
}

在你的主代码中

if (menu) {
MenuData.menuDetails(menu.dataValues).then(menu_details => {
if (menu_details) {
return res.send({ status: 200, message: menu_details });
} else {
return res.send({ status: 302, message: "Data Not Found" });
}
});
}

关于mysql - 当 Sequelize.findAll 在另一个文件上时,导出函数不返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58623695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com