node.js - 过滤包含在 sequelize 中

标签 node.js sequelize.js

我有一个 photo模型和 tags Sequelize 中的模型。我使用以下查询显示

models.photo
    .findAll({
        limit: 50,
        offset: ctx.offset,
        include :[{
            model: models.tags,
            as: 'tags'
        },{
            model: models.description,
            as: 'desc'
        }]
    })
  .then((photos) => {
    ctx.res.send(photos);
   });

我的问题,如何过滤包含特定标签的照片?它们使用关联
models.photo.hasMany(models.tags, {foreignKey: 'photo', sourceKey: 'name'});

例如,如果用户想要过滤 鸭子那么我应该能够显示鸭子的所有照片以及与它们相关的所有标签吗?

最佳答案

您可以内部加入phototags然后过滤 tags按你的属性

models.photo
    .findAll({
        limit: 50,
        offset: ctx.offset,
        include :[{
            model: models.tags,
            as: 'tags',
            where: {
                tag_name: 'duck'
            },
            required: true
        }]
    })
    .then((photos) => {
        ctx.res.send(photos);
    });

关于node.js - 过滤包含在 sequelize 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51056500/

相关文章:

express - 在数据库中保存 Sequelize 查询文本

mysql - Sequelize hasMany关联问题

python - 如何在python3中的EOF之前提前读取stdin缓冲区?

javascript - NodeJS JSONStream 将数据作为一个长字符串返回

node.js - 使用 Redis 进行用户查找表

postgresql - Sequelize 连接表并使用源模型过滤

sql - 如何在 select 中使用函数以及 Sequelize 中的所有记录?

mysql - 需要帮助构建奇怪的 Sequelize 查询

javascript - Node JS 如何检查现有 JSON 文件中是否已存在值

javascript - Sequelize : How can I prevent virtual columns from included relation from appearing in query result?