node.js - NodeJS Sequelize 和 FindAll 以及 Include 和约束

标签 node.js sequelize.js

我正在尝试使用“查找全部”中的“包含”功能来渴望在单个查询中加载我需要的数据。我的问题是所有包含的内容都是 LEFT OUTER JOIN ...这很好,但我没有找到向 LEFT OUTER JOIN 添加额外约束的方法。

我的查询类似于:

Matches.findAll(
   {where: ["match.isPublished = ?", true], 
    include: [RoundMaps, 
              Locations, 
              {model: MemberMaps, as: "MemberMaps", where: ["memberMaps.memberUUID = ?", authenticatedUser.uuid]}]})

但这似乎不受支持......至少我编写语法的方式是这样。我无法将该约束添加到 LEFT OUTER JOIN 上的约束中...向 WHERE 子句添加相同的约束不起作用...因为这仅给我与成员关联的匹配项。我想要所有公开匹配的列表,并了解该成员已经建立了哪些关联。

可以吗? Sequelize 似乎已经完成了大部分事情!但仍然在一些事情上挣扎。

欢迎提出见解!

干杯

最佳答案

根据您的问题,不可能将 where 子句与 LEFT OUTER JOIN 一起使用。 为此,您必须编写 SQL 查询来列出所有公共(public)匹配,并了解成员已经建立了关联的哪些匹配。

sequelize.query('SELECT * FROM "Matches" LEFT OUTER JOIN "RoundMaps" ON "Matches".id = "RoundMaps".match_id LEFT OUTER JOIN "Locations" ON "Matches".id = "Locations".match_id    LEFT OUTER JOIN (SELECT * FROM "MemberMaps" WHERE "MemberMaps".memberUUID = ?) AS "MemberMaps" ON "Matches".id = "MemberMaps".match_id WHERE "Matches".isPublished = ?', null, { raw: true }, [memberUUID,true ]).success(function(myTableRows) {
console.log(myTableRows);
res.send(myTableRows);
});

Executing raw SQL queries in Sequelize

关于node.js - NodeJS Sequelize 和 FindAll 以及 Include 和约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19050248/

相关文章:

sequelize.js - 按特定值顺序排序

node.js - 使用 express.json 代替 express.bodyparser

javascript - 检查 TypeScript 中 sinon stub 的参数

javascript - 使用 mongoose 验证 Express 中的 OTP

javascript - 使用 Not Null 将 findAll 序列化

node.js - 间接关联的 Sequelize

node.js - OPC-UA开源框架

javascript - 在 Javascript 中解构对象

sequelize.js - 在全局钩子(Hook)中识别 Sequelize 模型

node.js - 如何保存数组?