Sequelize

时间:2016-12-25 01:32:51

标签: sequelize.js

我正在处理一个查询,该查询返回用户的名称,ID以及属于该用户的操作和评论数量。这是SQL中的查询:

SELECT users.id, users.name, (
    SELECT count(*) from actions where users.id = actions.user_id
  ) as Action_Count, (
    SELECT count(*) from comments where users.id = comments.user_id
  ) as Comment_Count
FROM users

我对Sequelize有点新鲜,但经过几个小时的搜索和多次尝试后,我似乎无法弄清楚如何正确地编写它。所以我希望这里有人可以帮助指导我。这是我最好的尝试:

 User.findAll({
  attributes: ['name','id',
    [Sequelize.fn('count', Sequelize.col('actions.user_id')), 'count_of_actions'],
    [Sequelize.fn('count', Sequelize.col('comments.user_id')), 'count_of_comments']
  ],
  include: [{ attributes: [], model: Action },{ attributes: [], model: Comment }],
  group: ['user.id'],
  order: [['createdAt', 'ASC']]
})

但如果有任何评论,这会返回Action_CountComment_Count(两者相乘)的相同数字。

非常感谢任何帮助或指示!

1 个答案:

答案 0 :(得分:0)

我今天也面临着同样的问题。这是我通过添加独特功能来解决此问题的答案:

devtools::check()

帖子很旧,希望对您有所帮助。