我目前有一个带有列操作(JSONB)的表会话。
我能够使用array_to_jsonb(array value).
我的数组(数组值)的结构如下所示:
var arrayStructure = [
{name: 'email client', check: false},
{name: 'send contract', check: false}
]
Run Code Online (Sandbox Code Playgroud)
与我在 SO 上看到的许多关于修改 JSONB 或访问某些键的问题不同,我只对将整个 JSONB 数据转换回前端数组感兴趣。
我的临时解决方法是映射数组并在 Javascript 中使用 JSON.parse() 来重构数组中的每个对象。我不能在整个数组上使用 JSON.parse(),因为它会引发错误。
我正在寻找将数组格式恢复为存储的 JSONB 数据类型的查询。我见过 JSONB_SET、LATERAL 和 JSONB_ARRAY_ELEMENTS_TEXT。但不是以一种能够带回正确数组的方式。
开始为:名为 session 的表的操作列中的 JSONB
应该导致:返回所有行的查询,但操作列 (JSONB) 转换回前端的数组:
select session_id, session_name, someFunction or lateral here(actions) from sessions
Run Code Online (Sandbox Code Playgroud)
我试过这样的查询:
SELECT
session_id,
actions::jsonb -> 'name' as name
FROM sessions;
Run Code Online (Sandbox Code Playgroud)
并收到返回 null 的名称。我试过 ->> 访问更深层次,但这也不起作用。
这是正确查询结果的一半:
select session_id, jsonb_array_elements_text(actions)
from sessions …Run Code Online (Sandbox Code Playgroud)