如何在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
相关产品推荐
相关产品推荐

