这是关于sequelize ORM和我正在开发用于餐饮应用的节点js API。 MealPrice表(FK:mealId)链接到餐桌(PK:Id),餐桌(FK:RestaurantId)链接到餐厅表(PK:Id)。没有直接加入"餐厅"表格来自" mealprice"表。 我需要的是,如果我通过" IsActive = true"吃饭的状态价格表应该得到餐厅(清单)列表。老实说,我对sequelize ORM没有多少经验。这就是我现在尝试的东西,它会返回mealPrice和膳食数据。
global.mealpricing.belongsTo(global.meal, { targetKey: 'id', foreignKey: 'mealId' });
global.meal.belongsTo(global.resturant, { targetKey: 'id', foreignKey: 'resturantId' });
global.mealpricing.findAll({
include: [{
model: global.meal,
}],
where: { isActive: true }
}).then(meals => {
res.send(meals);
});
我关心的是如何获得仅限餐厅的JSON清单?请给我指点。
答案 0 :(得分:2)
通过这些ID查找所有餐馆,在'id'栏
上使用不同的运算符global.mealpricing.findAll({
where: {isActive: true},
include: {
model: global.meal,
attributes: ['resturantId']
}
})
.then(mealPricingDocs => {
const restaurantIds = mealPricingDocs.map(i => i.meal.restaurantId);
return global.restaurant.findAll({
where: { id: { $in: restaurantIds } },
distinct: 'id'
});
})
.then(restaurants => res.send(restaurants));