用覆盖序列化联接权限表

时间:2019-06-07 11:50:18

标签: sql sequelize.js

我正在尝试创建一个权限系统,其中有一个默认权限表,以及一个存储这些权限的覆盖值的表。

我似乎无法弄清楚正确的关联以及返回完整权限集的逻辑。

// permissions
id | key | value
________________
1  | 'a' | 0
2  | 'b' | 2
3  | 'c' | 5

// overrides
id | key | value
________________
3  | 'c' | 10

// results
id | key | value
________________
1  | 'a' | 0
2  | 'b' | 2
3  | 'c' | 10

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

这里是一个建议,假设表可以用id连接。 (如果必须由key加入,则关联将有所不同。)

Permissions.belongsTo(Overrides);

Persmissions.findAll({
      raw: true,
      include: { 
          model: Overrides, 
          required: false,
          attributes: [['value', 'override_val' ]]
        },
        attributes: [
            'id', 'key', 'value',
            [Sequelize.literal('case when override.value is not null then override.value else value end'), 'final_value']
        ]
    });

输出同时显示值和派生的最终值(因此您可以验证其是否有效)。 HTH