序列化复杂的join语句

时间:2019-08-15 09:51:35

标签: node.js sequelize.js

我最近从C#堆栈切换到了全堆栈javascript,并决定对我的项目使用Sequelize。我想编写一个查询,以获取用户以及相关的角色和租户对象。我以官方文档为指导,但是不知何故我缺少了一些东西。

我用作参考的

docs: https://sequelize.org/master/manual/querying.html#relations---associations

数据库模型: enter image description here

检索用户的代码:

let user = await User.findOne({
            where: { email },
            [
                include: {
                    model: Tenant,
                    where: { id: Sequelize.col('user.tenantId') }
                },
                include: {
                    model: Role,
                    where: { id: Sequelize.col('user.roleId') }
                },

            ]
        });

非常感谢您的帮助,干杯!

1 个答案:

答案 0 :(得分:1)

如果您已在sequlize中定义了关联,则include中不需要条件,并且如何包含模型可能存在语法问题,请查看以下查询:

User.findOne({
    where: { email },
    include: [
        {
            model: Tenant,
            // where: { id: Sequelize.col('user.tenantId') }  // <--- REMOVE
        },
        {
            model: Role,
            // where: { id: Sequelize.col('user.roleId') }  // <--- REMOVE
        }
    ]
});