Sequelize 中的唯一值

Unique values in Sequelize

我为 Node.js 使用 Sequelize ORM。我需要在特定列中获取具有唯一值的行。例子 table:

id | name | group
-----------------
1  | One  | 2
2  | Two  | 1
3  | Three| 2
4  | Four | 3
5  | Five | 1

查询列 group 和结果:

id | name | group
-----------------
1  | One  | 2
2  | Two  | 1
4  | Four | 3

第一行、第二行和第四行是第一个具有独特 group 值的人。如何在 Sequelize 中制作?

Sequelize 原始查询是获取所需行的一种方法:

/*
  var sql =
    SELECT r.id,
         r.name,
         r.groupnum
    FROM s04.row r
    JOIN
      (SELECT min(id) AS id,
              groupnum
       FROM s04.row
       GROUP BY groupnum) s 
    ON r.id = s.id
*/
return sq.query(sql, { type: sq.QueryTypes.SELECT});

生成的承诺将解析为 JSON 数组:

[
  {
    "id": 1,
    "name": "One",
    "groupnum": 2
  }
  ...
]

如果您随后需要将这些行作为实例使用,您可以对数组的每个元素调用 build

Model.build({ /* attributes-hash */ }, { isNewRecord: false })

有关示例,请参阅 here。如果我找到一种通过 Sequelize 函数调用(aggregatefind* 等)执行此操作的方法并不太可怕,我也会 post 将其作为单独的答案。