【发布时间】:2015-01-06 18:17:10
【问题描述】:
我有一个 mysql 数据库,我正在通过 node.js 中的 sequelize 访问它。
我想加入 3 张桌子。
关系是:
Person n : n Work (associated through PersonWork having foreign key for Person and Work)
Work n : n Book (associated through BookWork having foreign key for Book and Work)
我想让 Person、Work 和 Book 加入。
现在我在节点中嵌套了 2 个查询,但结果似乎很慢。
SQLPersonWork.findAll({ where: {}, include: [SQLWork, SQLPerson] }).success(function (sqlresult) {
sqlresult.forEach(function ProcessPersonWorkResult(oneresult) {
var work = oneresult.work;
var name = oneresult.person.name;
(function (work, name) {
SQLBookWork.findAll({ where: { "work_id": work.id }, include: [SQLBook] }).success(function (sqlbookresult) {
sqlbookresult.forEach(function ProcessBookResult(onebook) {
// process result I want to get
});
});
})(work, name);
});
可以看到双重嵌套的 findAll()。
有没有办法将其组合成 1 个查询?
【问题讨论】:
标签: javascript mysql node.js select sequelize.js