gpt4 book ai didi

sequelize.js - 如何使用 sequelizejs 计算两个连接表的行数

转载 作者:行者123 更新时间:2023-12-03 22:37:42 25 4
gpt4 key购买 nike

我有两张 table 用户 喜欢 .关系是多对一的,一个用户可以有很多个赞。我想计算一个用户有多少喜欢,并返回一个带有用户名的对象和一个带有喜欢数的列数,但是,我发现在 sequelize 中很难做到这一点。

下面是一个有效的原始查询,结果是一个表。

|用户名 |计数 |

|约翰·多伊 | 2 |

SELECT us.username, COUNT(lk.other_user_id)
FROM user as us
INNER JOIN like as lk
ON us.id = lk.other_user_id
WHERE us.id = 40
GROUP BY us.username

这是我尝试过的 Sequelize 代码。
like.findAll({
attributes: {
include: [[sequelize.fn('COUNT', sequelize.col('other_user_id')), 'like_count']],
},
where: { other_user_id: 40 },
include: [{
model: user,
attributes: [],
where: { id: 40 },
}],

group: ['user.username'],
});

结果应该是一个带有用户 的对象姓名 和房产 计数 随着喜欢的数量。而是返回所有行并为每个对象计数为 1。

最佳答案

我找到了解决方案。我包括了 用户 但是在我上面提到的 SQL 原始查询中 加入 我测试的条件 user.id = like.other_user_id 但是上的外键喜欢 表是 用户 ID 并指向 id 上的专栏用户 表,因此, Sequelize 找不到任何具有 的行user.id = like.other_user_id ,而是匹配为 user.id = like.user_id .

以下是我在 上加入表格的解决方案自定义列 .

const { ok, result, error } = await handlePromise(like.findAll({
attributes: [[sequelize.fn('COUNT', sequelize.col('like.other_user_id')), 'like_count']],
include: [
{
model: user,
where: { id: userId },
attributes: ['username'],
on: {
col1: sequelize.where(sequelize.col('user.id'), '=', sequelize.col('like.other_user_id')),
},
},
],
group: ['user.username'],
raw: true,
}));

关于sequelize.js - 如何使用 sequelizejs 计算两个连接表的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56658023/

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