Sequelize:重叠-检查数组中的任何值是否与传递的数组中的任何值匹配

Hay*_*yan 8 sql database postgresql node.js sequelize.js

使用sequelize检查db输入属性(即array)是否具有给定项。有一个包含数据Events的Postgres数据库。想要得到一个事件,将有这些的工作日weekDays的类型为ARRAY(整数)。

Events.findOne({
  where: {
    weekDays: {
      $contains: [2, 3],
    },
  },
});
Run Code Online (Sandbox Code Playgroud)

试图与$ contains,$ any或$ like $ any一起使用,但始终收到相同的错误消息。

TypeError:values.map不是函数

衷心的感谢

Mic*_*abe 10

您正在寻找重叠的值。你在任何数值weekDays数组,在您的匹配任何值数组传递。

这样,您可以使用PG特定的Sequelize.Op.overlap运算符:

在这里查看文档

然后可以像

Events.findOne({
  where: {
    weekDays: {
      [Sequelize.Op.overlap]: [2, 3],
    },
  },
});
Run Code Online (Sandbox Code Playgroud)