在嵌套预加载 sequelize 查询中,只获取一些属性
in nested eager loading sequelize query, fetch only some attributes
这是我从数据库中获取节目及其相关场地和乐队的查询。
我真的只想得到乐队和场地的名字。 (name
是这两个表中的字段。)不过,下面的代码正在获取整个记录,而不仅仅是我想要的字段。
const getAllShows = async (req, res) => {
try {
const shows = await Show.findAll({
include: [
{ model: User, as: 'bands', through: { attributes: ['name'] } },
{ model: Venue, through: { attributes: ['name'] }}
],
});
res.status(200).send(shows);
}
catch(err) {
res.send(400);
}
}
attributes
放错地方了 - 它不属于 through
(顺便说一句,根据你的联想,你甚至可能不需要 through
)。
试试这样改:
{ model: User, as: 'bands', attributes: ['name']},
您也可以考虑字段别名,如下所示:
{ model: User, as: 'bands', attributes: [['name', 'band_name']]},
hth
这是我从数据库中获取节目及其相关场地和乐队的查询。
我真的只想得到乐队和场地的名字。 (name
是这两个表中的字段。)不过,下面的代码正在获取整个记录,而不仅仅是我想要的字段。
const getAllShows = async (req, res) => {
try {
const shows = await Show.findAll({
include: [
{ model: User, as: 'bands', through: { attributes: ['name'] } },
{ model: Venue, through: { attributes: ['name'] }}
],
});
res.status(200).send(shows);
}
catch(err) {
res.send(400);
}
}
attributes
放错地方了 - 它不属于 through
(顺便说一句,根据你的联想,你甚至可能不需要 through
)。
试试这样改:
{ model: User, as: 'bands', attributes: ['name']},
您也可以考虑字段别名,如下所示:
{ model: User, as: 'bands', attributes: [['name', 'band_name']]},
hth