将 [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 问题
我可以/应该将 ES 模块用于客户端 JS 文件吗?我使用 node.js [重复]