You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Supabase中基于嵌套jsonb字段匹配手机号查询联系人问题

问题:Supabase中根据JSONB嵌套字段的手机号查询联系人失败

我在Supabase中有一个Contacts表,其中包含一个jsonb类型的basics列,该列的JSON结构如下:

{
  "id": "f760017a-7adb-437c-8b5c-4e1f914a0339",
  "avatar": "",
  "status": "active",
  "company": "",
  "channels": {
    "239455a5-9d0b-48d7-8ef2-8310fdcc5e73": {
      "id": "239455a5-9d0b-48d7-8ef2-8310fdcc5e73",
      "label": "Instagram",
      "value": "",
      "channelKey": "social",
      "channelType": "Social",
      "isMessageChannel": false
    },
    "abbde327-d5bd-4428-b980-0311ae574d91": {
      "id": "abbde327-d5bd-4428-b980-0311ae574d91",
      "label": "Personal",
      "value": "",
      "channelKey": "email",
      "channelType": "Email",
      "isMessageChannel": false
    },
    "cb783d57-d9b3-4e9f-a708-3f115a154f23": {
      "id": "cb783d57-d9b3-4e9f-a708-3f115a154f23",
      "label": "Mobile",
      "value": "3335557777",
      "channelKey": "sms",
      "channelType": "Phone",
      "isMessageChannel": true
    }
  },
  "lastName": "Roberts",
  "addresses": {},
  "firstName": "Freddie"
}

我需要根据联系人的手机号查找对应的联系人,尝试了以下代码但执行失败:

const { data: contacts, error: _err } = await supabaseClient
            .from('contacts')
            .select('*')
            .contains('basics->channels->value', '3335557777')

请问如何解决这个嵌套值匹配的问题?


解决方案

你的代码执行失败是因为basics->channels是以UUID为键的对象集合,并非直接包含value字段的结构,contains无法定位到动态键下的嵌套value字段。可以通过PostgreSQL的JSON路径查询实现需求,Supabase原生支持该方式,具体代码如下:

const { data: contacts, error } = await supabaseClient
  .from('contacts')
  .select('*')
  .filter('basics', 'jsonb_path_exists', '$.channels.*.value == "3335557777"')

代码说明:

  • jsonb_path_exists是PostgreSQL的JSONB函数,用于检查JSON路径是否存在匹配值
  • $.channels.*.value是JSON路径表达式:
    • $代表根节点(即basics列的JSON对象)
    • channels.*表示遍历channels对象下的所有子节点(忽略键名)
    • .value表示匹配子节点中的value字段,判断其是否等于目标手机号"3335557777"

如果需要模糊匹配手机号,可调整路径表达式:

// 模糊匹配以333开头的手机号
.filter('basics', 'jsonb_path_exists', '$.channels.*.value like_regex "333.*"')

内容的提问来源于stack exchange,提问作者JarvisWorks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 12:13:11