如何使用 0p.in 来搜索对象数组?
how to use 0p.in to search the array of objects?
为了更好地解释我需要什么,我从我拥有的开始。我有一个带有简单主键的 table - 当我删除记录时,我将需要删除的 ID 数组传递给该函数。随后,我使用这个 sequelize 查询来确定需要删除哪些记录
const where: any = { id: { [Op.in]: deleteIds } };
发生了什么变化?我需要为 table 使用复合主键,所以我不再将字符串数组传递给 table,而是将具有多个属性的对象数组传递给
]
[ {
prop1: value1,
prop2: value2
}, {
prop1: value2,
prop2: value3
} ]
并且只删除那些符合这两个属性的记录。有人可以建议怎么做吗?我在想这样的事情,但它不起作用。我觉得我需要确保不仅(要删除的对象的)两个值都需要出现在数组中,而且都需要与单个对象相关。谢谢
{
$and: [
{ column1: { [Op.in]: deleteIds.prop1 } },
{ column2: { [Op.in]: deleteIds.prop2 } },
]
}
您只需要结合 Op.and
(由带有 props 的对象隐式定义)和 Op.or
使其工作:
{
[Op.or]: deleteIds.map(x => ({
column1: x.prop1,
column2: x.prop2,
}))
}
为了更好地解释我需要什么,我从我拥有的开始。我有一个带有简单主键的 table - 当我删除记录时,我将需要删除的 ID 数组传递给该函数。随后,我使用这个 sequelize 查询来确定需要删除哪些记录
const where: any = { id: { [Op.in]: deleteIds } };
发生了什么变化?我需要为 table 使用复合主键,所以我不再将字符串数组传递给 table,而是将具有多个属性的对象数组传递给
][ {
prop1: value1,
prop2: value2
}, {
prop1: value2,
prop2: value3
} ]
并且只删除那些符合这两个属性的记录。有人可以建议怎么做吗?我在想这样的事情,但它不起作用。我觉得我需要确保不仅(要删除的对象的)两个值都需要出现在数组中,而且都需要与单个对象相关。谢谢
{
$and: [
{ column1: { [Op.in]: deleteIds.prop1 } },
{ column2: { [Op.in]: deleteIds.prop2 } },
]
}
您只需要结合 Op.and
(由带有 props 的对象隐式定义)和 Op.or
使其工作:
{
[Op.or]: deleteIds.map(x => ({
column1: x.prop1,
column2: x.prop2,
}))
}