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

如何在Supabase中实现Firestore的array contains查询?

在Supabase中实现Firestore的array contains查询

完全可行,Supabase基于PostgreSQL,原生支持数组包含查询,你之前的写法存在参数格式或方法选择错误,正确实现方式如下:

正确代码示例

let client = SupabaseClient(supabaseURL: URL(string: "****")!, supabaseKey: "*****")

Task {
    do {
        let response: [tableModel] = try await client.database
              .from("Posts")
              .select("*")
              .contains(column: "members", value: [userid]) // 将userid包装为数组传入
              .execute()
              .value
        
        // 处理查询结果
    } catch {
        print("### 查询错误: \(error)")
    }
}

你之前尝试的错误原因

  • 使用.in方法:该方法用于匹配列值存在于指定集合中,不是数组包含检查的场景,因此不适用
  • 使用.filter(operator: .cs):.cs是字符串包含操作符,仅针对字符串类型字段,无法处理数组类型,会返回400错误
  • 错误的.contains写法:直接传入单个userid而非数组[userid],不符合Supabase数组包含查询的参数要求

扩展:匹配数组包含多个元素

如果需要实现类似Firestore的arrayContainsAny功能(检查数组包含指定多个元素中的任意一个),同样使用.contains方法,传入包含多个元素的数组即可:

.contains(column: "members", value: [userid1, userid2, userid3])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 21:02:11