我有一个photo
模型和一个tags
模型。我使用以下查询显示的内容
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'});
例如,如果用户要过滤鸭子,那么我应该能够显示鸭子的所有照片以及与它们相关的所有标签?
答案 0 :(得分:0)
您可以在Sequelize.literal()
中使用where子句,以下示例可能会对您有所帮助
const filterTagName = 'duck';
models.photo
.findAll({
where: Sequelize.literal(`tags.name = '${filterTagName}'`), // assuming you have a field name in tags model and model name is tags
limit: 50,
offset: ctx.offset,
include :[{
model: models.tags,
as: 'tags'
},{
model: models.description,
as: 'desc'
}]
})
.then((photos) => {
ctx.res.send(photos);
});
答案 1 :(得分:0)
您可以内部加入photo
和tags
然后通过您的属性过滤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);
});