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

使用supabase-js筛选文本数组列无结果,SQL查询正常求排查

问题原因与解决方案

错误原因

直接传递JS数组["123456"]给.contains()方法时,supabase-js会将其序列化为JSON数组,但你的phone_numbers字段是PostgreSQL的text[]原生数组类型,两者格式不匹配,导致筛选条件不生效。而手动编写的SQL用array['123456']是PostgreSQL原生数组格式,因此能正确匹配。

修正方案

使用supabase-js提供的postgres.array()工具,将JS数组转换为PostgreSQL原生数组格式后传入.contains()方法:

  1. 先导入postgres工具(未导入的话):
import { postgres } from '@supabase/supabase-js'
  1. 修改查询代码:
const { data, error } = await supabaseClient
  .from('profiles')
  .select('*')
  .contains('phone_numbers', postgres.array(["123456"]))

替代方案

如果不想额外导入工具,也可以直接用.sql()方法编写原生筛选条件:

const { data, error } = await supabaseClient
  .from('profiles')
  .select('*')
  .sql`phone_numbers @> array['123456']`

内容的提问来源于stack exchange,提问作者Björn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 12:52:13