Firestore Snapshot问题:getAll返回的文档是否需要检查exists属性?
结论
调用 firestore.getAll() 时,返回的结果数组中完全可能包含exists属性为false的文档快照,你给出的遍历打印代码是会出现输出false的情况的。
具体规则说明
getAll()的返回结果和你传入的文档引用数组是严格按顺序一一对应的,你传入多少个DocumentReference实例,就会返回多少个DocumentSnapshot实例,不会自动过滤掉不存在的文档。- 如果某一个引用对应的文档在Firestore中不存在,对应的快照的
exists属性就会为false,此时调用快照的data()方法会返回undefined。
设计逻辑
这种设计反而更符合实际开发需求:你可以直接按传入引用的顺序匹配结果,不需要额外做差集计算就能快速定位到哪些引用对应的文档不存在。如果方法自动过滤掉不存在的文档,你反而要额外处理才能知道哪份数据丢失了。
常见处理方式
如果你只需要保留存在的文档,直接过滤即可:
const existedDocs = docs.filter(doc => doc.exists);
内容的提问来源于stack exchange,提问作者Raul
相关产品推荐
相关产品推荐

