【发布时间】:2016-05-21 06:22:19
【问题描述】:
我有 A、B 和 C 类
A B 和 B C
对于单个A,我想找到所有与A相关的C。
如何编写 sequelize 查询以使其仅执行一次 SQL 调用?
sequelize 中已经定义了多对多关系, 例如,我已经可以执行 a.getBs()、b.getCs() 或 c.getBs()
我显然可以写,
a.getBs()
.then(function(Bs) {
return foreach(Bs, function(b) {return b.getCs();})
})
.then(function() {
// flatten array of array of C here.
})
但是这样做的 SQL 请求太多了。
另外,如果我有一个 A 数组怎么办?有没有办法只执行一条 SQL 来返回 {a1: ["c1", "c2"], a2: ["c2", "c99"] ...}
的映射SELECT A.name, C.name as anotherName
FROM A
LEFT JOIN A_B ON A.id = A_B.A_id
LEFT JOIN B ON A_B.B_id = B.id
LEFT JOIN B_C ON B.id = B_C.B_id
LEFT JOIN C ON C.id = B_C.C_id
GROUP BY name, anotherName
我认为这是我需要的 SQL,不知道如何从 sequelize 生成它。
【问题讨论】:
标签: javascript sql sequelize.js