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 函数调用(aggregate
、find*
等)执行此操作的方法并不太可怕,我也会 post 将其作为单独的答案。
我为 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 函数调用(aggregate
、find*
等)执行此操作的方法并不太可怕,我也会 post 将其作为单独的答案。