在我目前的项目中,我创建了一个Gallery Service,我想在其中实现一个搜索功能,用户可以通过选择不同的过滤器来搜索特定的图像。在后端,为图像分配了许多过滤器。
我的问题是,当我向Gallery Service 提供多个过滤器时(例如以下过滤器ID:23,42),它会返回包含过滤器#23的图像 OR 过滤器#42 或两者。我希望只获得包含两个ID的图像。
picture.model.js
sequelize.define("Picture", {
//...
picturePath: {
type: DataTypes.STRING
}
}, {
classMethods: {
associate: function(models) {
Picture.belongsToMany(models.Filter, { as: 'filters', through: 'PictureFilter' };
}
}
filter.model.js
sequelize.define("Filter", {
//...
name: {
type: DataTypes.STRING
}
}
查询我尝试的内容
model.Picture.findAndCountAll({
where: {
$ne: null
},
include: [
{
model: models.Filter,
as: 'filters',
where: {
id: {
$in: [23, 42]
}
}
}
]
经验丰富的结果:
[
{
...,
"rows": [
{
...,
"filters": [
{
"id": 23,
...
}
]
},
{
...,
"filters": [
{
"id": 23,
...
},
{
"id": 42,
...
}
]
}
]
}
]
预期结果:
[
{
...,
"rows": [
{
...,
"filters": [
{
"id": 23,
...
},
{
"id": 42,
...
}
]
}
]
}
]
提前谢谢!
答案 0 :(得分:-1)
使用$contains
代替$in
,请参阅以下示例:
id: {
$contains: [23, 42]
}