为何Firestore查询明明存在匹配项却返回无结果?
问题排查与解决
从你的描述和代码来看,添加查询过滤器后返回空结果,大概率是以下几个原因导致的,逐一排查:
字段类型不匹配(最可能)
从你提供的数据库结构截图来看,myTag是数组类型,但你的查询用了==来匹配字符串值。Firestore中==用于精确匹配,如果你想找数组中包含hal_top_g的文档,需要使用array-contains操作符,修改代码如下:const q = query(ref, where("myTag", "array-contains", "hal_top_g"));大小写敏感问题
Firestore的查询是严格大小写敏感的,确认数据库中myTag数组里的元素是否和你查询的hal_top_g完全一致(比如有没有写成Hal_Top_G、HAL_TOP_G等)。字段名拼写错误
检查数据库中的字段名是否确实是myTag,注意Firestore字段名区分大小写,不要写成mytag、MyTag这类错误的名称。安全规则限制(概率较低)
虽然无过滤器时能获取数据,但添加条件后可能触发了Firestore安全规则的限制。检查你的安全规则是否允许带该条件的查询,确保规则没有限制只能查询特定条件的文档。
内容的提问来源于stack exchange,提问作者Conquest Onyekachi Idam
相关产品推荐
相关产品推荐

