繁体   English   中英

序列化-使用或运算符与模型关联进行查询

[英]Sequelize - query with or operator and model association

使用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个条件,该运算符将起作用,但是如何在关联上添加一个条件?

我终于找到了提示:

实际上, $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,
        }],
    });

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM