Sequelize:重叠 - 检查数组中的任何值是不是与传递的数组中的任何值匹配
Posted
技术标签:
【中文标题】Sequelize:重叠 - 检查数组中的任何值是不是与传递的数组中的任何值匹配【英文标题】:Sequelize: overlapping - Checking if any value in array matches any value in the passed arraySequelize:重叠 - 检查数组中的任何值是否与传递的数组中的任何值匹配 【发布时间】:2018-06-27 19:43:14 【问题描述】:使用 sequelize 检查 db 输入属性(即数组)是否具有给定项。 有一个带有数据 Events 的 Postgres 数据库。 想要获得一个具有这些 weekDays 中的任何一个的 Event。 weekDays 的类型是 ARRAY(integer)。
Events.findOne(
where:
weekDays:
$contains: [2, 3],
,
,
);
尝试使用 $contains、$any 或 $like $any,但始终收到相同的错误消息。
TypeError: values.map 不是函数
非常感谢
【问题讨论】:
你使用$in
子句了吗?我会推荐$like
子句...
@AshishChoudhary 也尝试了 $in 和 $like,同样的错误
好的...用findAll
代替findOne
又是同样的错误
【参考方案1】:
您正在寻找重叠值。 weekDays
数组中与传入数组中的任何值匹配的任何值。
因此,您可以使用 PG 特定的Sequelize.Op.overlap
运算符:
See documentation here
然后可以像这样使用
Events.findOne(
where:
weekDays:
[Sequelize.Op.overlap]: [2, 3],
,
,
);
【讨论】:
以上是关于Sequelize:重叠 - 检查数组中的任何值是不是与传递的数组中的任何值匹配的主要内容,如果未能解决你的问题,请参考以下文章
检查两个 3D numpy 数组是不是包含重叠的 2D 数组