如何在Supabase中筛选匹配数组中任意值的行?
解决标签任意匹配的筛选问题
你当前用的.select().contains("tags", ["tag1", "tag2"])是同时匹配所有指定标签的逻辑,所以只会返回同时包含tag1和tag2的行。要实现匹配任意一个指定标签的需求,需要改用**逻辑或(OR)**来拼接单个标签的匹配条件。
具体实现方式
如果你的工具/库支持or条件组合,就把每个标签的contains判断用or连接,比如:
.select().or( contains("tags", "tag1"), contains("tags", "tag3") )
对应场景示例
- 搜索tag1和tag3:用上述代码,会匹配包含tag1或tag3的行,对应第1、3、4行
- 搜索tag2和tag4:组合
contains("tags", "tag2")和contains("tags", "tag4")的OR条件,所有行都满足其中一个标签,返回全部行 - 搜索tag4:直接用
.select().contains("tags", "tag4")即可,仅返回第2行
如果你的库没有现成的or方法,也可以手动构建正则表达式来匹配任意标签,比如:
.select().matches("tags", /tag1|tag3/)
内容的提问来源于stack exchange,提问作者pelak
相关产品推荐
相关产品推荐

