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 中的任何一个的 EventweekDays 的类型是 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:重叠 - 检查数组中的任何值是不是与传递的数组中的任何值匹配的主要内容,如果未能解决你的问题,请参考以下文章

Sequelize - 从数组批量创建

在 sequelize 中检查 mysql 连接

检查两个 3D numpy 数组是不是包含重叠的 2D 数组

Java检查两个矩形是不是在任何点重叠

我想用 Sequelize 将 MySQL 中的对象数组存储在单个列中

Javascript(NodeJs) - 将数组和对象转换为 mysql 中的批量插入(Sequelize)