【问题标题】:Using [Sequelize.Op.in] for json object arrays将 [Sequelize.Op.in] 用于 json 对象数组
【发布时间】:2020-12-22 10:33:30
【问题描述】:

我有一个元标记表,其中包含一个 tagId 和一个值。

我有一个 tagId,value 对象数组

例如:[{'tagId':2, 'value':33}, {'tagId':2, 'value':34}, {'tagId':1, 'value':34} 等。]

我的 metaTag 表包含一个虚拟列,它将为表中的每个条目返回 {tagId,value} 对象。我的问题是如何选择数组中每个 {tagId, value} 对的行。

换句话说,我希望能够做类似的事情

[Sequelize.Op.in]:[{'tagId':2, 'value':33}, {'tagId':2, 'value':34}]

但是,这不起作用。

我可能没有很好地解释这一点,英语不是我的第一语言。请询问您是否需要对此问题进行任何澄清。

【问题讨论】:

    标签: javascript typescript sequelize.js sequelize-typescript


    【解决方案1】:

    您可以通过使用 Op.or 来实现这一点。如果我没有错,你正在尝试 ('tagId' = 2 and 'value' = 33) 或 ('tagId' = 2, 'value' = 34):

    where: { [Sequelize.Op.or]: [{'tagId':2, 'value':33}, {'tagId':2, 'value':34}] }

    您可以向 or 数组添加 n 个值。根据您的要求。

    如果你想这样做: tagId in(2, 2) 和 value in (33, 34) then:

    where: {'tagId':[2], 'value':[33, 34]}

    您不需要数组的显式 Op.in。

    【讨论】:

      【解决方案2】:

      你可以在那里使用:

          const myDeviceIds = [1, 2, 3, 4, 7, 9, 29];
          const macroDevices = await MacroDevice.findAll({
          where: {
              deviceId: {
                  [Op.in]: myDeviceIds,
              },
              life: {
                  [Op.not]: null,
              },
              status: {
                  [Op.is]: null,
              }
          },
          order: [
              ['id', 'DESC']
          ],
          limit,
          offset,
          include: [
              Macro,
              Targets,
          ]
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-13
        • 1970-01-01
        • 1970-01-01
        • 2020-05-02
        • 2012-03-29
        • 1970-01-01
        • 1970-01-01
        • 2012-07-21
        相关资源
        最近更新 更多