如何为Sequelize转换SQL查询?

问题描述 投票:2回答:2

我有一个SQL查询(使用mysql作为DB),我现在需要在node.js中重写为sequelize.js查询。

SQL查询

SELECT p.UserID, SUM(p.score), u.username
FROM Picks p
LEFT JOIN Users u
ON p.UserId = u.id
GROUP BY p.UserId;

不太确定如何构造此查询以获得与sequ​​elize相同的结果。

sql node.js sequelize.js
2个回答
1
投票

这应该做你需要的:

db.Pick.findAll({
  attributes: [
    'UserID',
    [db.sequelize.fn('SUM', db.sequelize.col('score')), 'score']
  ],
  include: [{
    model: db.User,
    required: true,
    attributes: ['username']
  }],
  group: ['UserID']
}).then((results) => {
  ...
})

0
投票

也许尝试这个(我假设你已经关联PicksUsers),你可以通过pick.user.username访问user.name:

Picks.findAll({
    attributes: ['UserID', [sequelize.fn('SUM', 'score'), 'sumScore']]
    groupBy: ['UserID']
    include: [
        model: Users
    ]
});
© www.soinside.com 2019 - 2024. All rights reserved.