Firestore:如何判断数组是否包含指定DocumentReference
检查DocumentReference数组是否包含指定引用的解决方案
直接用includes()检查Firebase的DocumentReference数组会失效,因为DocumentReference是对象类型,includes()比较的是对象的内存引用——哪怕两个引用指向同一个Firestore文档,只要是不同实例,结果就会是false。
解决方法可以换成比较文档的路径字符串,这是最可靠的方式:
const likedWorkouts = user.collection('additional').doc('liked'); const snapshot = await likedWorkouts.get(); const exists = snapshot.exists; // 用some()遍历数组,比较每个引用的path与目标引用的path是否一致 hasLiked = snapshot.data()?.liked?.some(ref => ref.path === workout.path);
补充说明
some()方法会遍历数组,只要找到一个符合条件的元素就返回true,性能和includes()接近- 也可以比较文档ID结合父集合路径,但直接用
ref.path更简洁,因为路径本身就唯一标识了Firestore中的文档位置
内容的提问来源于stack exchange,提问作者JaRoMaster
相关产品推荐
相关产品推荐

