0

我试图从包含对象的 JSONB 数组的表中获取单个条目。我可以以某种方式匹配该数组以找到所需的结果吗?

[
    {
        "chats": [
            {
                "id":  56789,
            },
            {
                "id":  66753,
            },
        ],
        "id": 999
    },  
    {
        "chats": [
            {
                "id":  43532,
            }
        ],
        "id": 999
    }
]

我想获取与 id 匹配999并包含在chats->中的对象id: 66753

尝试了几种方法,但都没有奏效。

我虽然有些东西链接这会起作用。但没有成功

let { data, error } = await supabase
  .from('xyz')
  .select('*')
  .eq('id', 999)
  .contains('chats', {id: 66753})

可以做到吗?

4

1 回答 1

1

我是一名新程序员,因此下面的代码可能不正确,但我相信您在从 supabase 查询 JSONB 数据时需要使用 -> 或 ->> 运算符,如文档中所述。

因此,如果您的包含对象数组的列的标题为 jsonb,则效果如下:

  let { data, error } = await supabase
      .from('xyz')
      .select('*')
      .eq('id:jsonb->>id', 999)
      .contains('chats:jsonb->>chats', ['chats->id: 66753'])

可以在此处的 PostgREST 文档中找到更多信息

于 2021-07-29T17:48:59.840 回答