首页 > 解决方案 > Sequelize - 使用或运算符和模型关联进行查询

问题描述

使用Sequelize,我有两个具有多对多关联的模型:UserCategory.
我想获取属于当前用户的所有类别,以及具有特定属性的类别,但我不明白如何,只有一个查询......

Op.or根据文档$Model.attribute$关联模型的语法(参见此处) ,我正在使用运算符。

let categories = await models.category.findAll({
        where: {
            [Op.or]: [
                { someCategoryProperty: true },
                { '$User.id$': req.currentUser.id },
            ],
        },
        include: [{
            model: models.user,
            as: 'User',
        }],
    });

如果我添加关于 Category 模型的 2 个条件,则操作员可以工作,但是如何在关联中添加条件?

标签: node.jssequelize.js

解决方案


我终于找到了提示:

其实,$Model.attribute$不是好的模式,$database_table_name.attribute$是好的模式。

使用'$..$'语法,我们必须使用数据库表名,而不是模型。
如果我的模型被调用user,Sequelize 设置数据库名称users

所以这段代码有效:

let categories = await models.category.findAll({
        where: {
            [Op.or]: [
                { someCategoryProperty: true },
                { '$users.id$': req.currentUser.id },
            ],
        },
        include: [{
            model: models.user,
        }],
    });

谢谢


推荐阅读