gpt4 book ai didi

node.js - 使用sequelize查询Postgres嵌套JSONB列

转载 作者:行者123 更新时间:2023-12-03 22:18:17 25 4
gpt4 key购买 nike

嗨,我有一个表,我在其中使用 JSONB 存储嵌套 JSON 数据,并且需要查询此 JSONB 列下面是表的结构

 {
"id": "5810f6b3-fefb-4eb1-befc-7df11a24d997",
"entity": "LocationTypes",
"event_name": "LocationTypes added",
"data": {
"event":{
"id": "b2805163-78f0-4384-bad6-1df8d35b456d",
"name": "builidng",
"company_id": "1dd83f77-fdf1-496d-9e0b-f502788c3a7b",
"is_address_applicable": true,
"is_location_map_applicable": true}
},
"notes": null,
"event_time": "2020-11-05T10:56:34.909Z",
"company_id": "1dd83f77-fdf1-496d-9e0b-f502788c3a7b",
"created_at": "2020-11-05T10:56:34.909Z",
"updated_at": "2020-11-05T10:56:34.909Z"
}

下面的代码给出空白数组作为响应


const dataJson = await database.activity_logs.findAll({
where: {
'data.event.id': {
$eq: 'b2805163-78f0-4384-bad6-1df8d35b456d',
},
},
raw: true,
});

有什么方法可以更好地使用sequelize完成查询嵌套json对象。

最佳答案

您应该尝试使用 sequelize.literal 将 JSON 运算符/函数包装到 sequelize.where 中。像这样的事情:

sequelize.where(sequelize.literal("data->'event'->'id'"), '=', 'b2805163-78f0-4384-bad6-1df8d35b456d')

更新的语法(不确定从哪个 Sequelize 版本开始工作)来构造针对 JSON 的条件:

{
data: {
event: {
id: 'b2805163-78f0-4384-bad6-1df8d35b456d'
}
}
}

关于node.js - 使用sequelize查询Postgres嵌套JSONB列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64701518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com