使用sequelize检查db输入属性(即array)是否具有给定项。
有一个带有数据事件的Postgres数据库。
想要获得一个可以在这些工作日中进行任何事件的事件。
weekDays的类型为ARRAY(整数)。

Events.findOne({
  where: {
    weekDays: {
      $contains: [2, 3],
    },
  },
});

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



衷心的感谢

最佳答案

您正在寻找重叠的值。 weekDays数组中与传入数组中的任何值匹配的任何值。

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

See documentation here

然后可以像

Events.findOne({
  where: {
    weekDays: {
      [Sequelize.Op.overlap]: [2, 3],
    },
  },
});

09-18 15:42