将 [Sequelize.Op.in] 用于 json 对象数组

Posted

技术标签:

【中文标题】将 [Sequelize.Op.in] 用于 json 对象数组【英文标题】:Using [Sequelize.Op.in] for json object arrays 【发布时间】: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]

但是,这不起作用。

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

【问题讨论】:

【参考方案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,
    ]
);

【讨论】:

以上是关于将 [Sequelize.Op.in] 用于 json 对象数组的主要内容,如果未能解决你的问题,请参考以下文章

将 Vue.js 用于客户端,将 Express 用于服务器端时出现“Access-Control-Allow-Origin”CORS 问题

是否可以将 SRI 用于 recurly.js cdn?

我可以/应该将 ES 模块用于客户端 JS 文件吗?我使用 node.js [重复]

您可以将 Gatsby 和 Next js 用于单个 React js 网站吗?

将对象推入数组不适用于模态角度js

我正在尝试将mysql用于discord.js的多行会