【发布时间】:2021-09-03 03:42:19
【问题描述】:
我有一个 sequelize 查询,它呈现正确的 SQL 语句,但它会返回连接表的主键。由于此查询使用 Group By 附加字段是不可接受的,但我不确定如何删除它。
userDB.tblUsers.belongsTo(userDB.tblSMSSent, { foreignKey: 'collector', targetKey: 'user' });
userDB.tblSMSSent.hasMany(userDB.tblUsers);
let users = await userDB.tblUsers.findAll({
attributes: ['collector', 'tblUsers.id'],
include: {
model: userDB.tblSMSSent,
as: 'tblSMSSent',
attributes: [[sequelize.fn('COUNT', 'tblSMSSent.id'), 'numMessages']]
},
group: ['tblUsers.collector', 'tblUsers.id'],
logging: console.log
})
呈现的SQL是这样的:
SELECT
[tblUsers].[collector],
[tblUsers].[id],
[tblSMSSent].[id] AS [tblSMSSent.id],
COUNT(N'tblSMSSent.id') AS [tblSMSSent.numMessages]
FROM [dbo].[tblUsers] AS [tblUsers] LEFT OUTER JOIN [dbo].[tblSMSSent] AS [tblSMSSent] ON [tblUsers].[collector] = [tblSMSSent].[user]
GROUP BY [tblUsers].[collector], [tblUsers].[id];
我需要这个不包括 tblSMSSent.id 的查询。我已尝试在包含属性中使用this article 中所述的exclude: tblSMSSent.id,但这也没有成功。我如何才能正确地从我的查询中排除该列?
【问题讨论】:
标签: node.js sequelize.js