У меня есть класс А, В и Сsequelize.js подряд многие ко многим
< - многие ко многим -> B и B < - многие многочастичными> C
Для одного A , Я хочу найти все C, связанные с A.
Как написать запрос продолжения так, чтобы он выполнял только один 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.