如何在Firebase Firestore指定文档内查询animeID字段?
解决方案
你不需要用query(它仅适用于集合级别的查询),直接针对单个指定文档获取引用,然后监听该文档的快照,再检查其animeID数组是否包含目标值即可。
修改后的代码如下:
// 传入目标文档ID,获取单个文档的引用 const docRef = doc(db, 'users', '目标文档ID'); // 替换成你要查询的具体文档ID // 监听该文档的实时快照 onSnapshot(docRef, (doc) => { if (doc.exists()) { const userData = doc.data(); // 检查animeID数组是否包含目标ID const hasTargetAnime = userData.animeID.includes(parseInt(id)); console.log(hasTargetAnime); // 直接输出true或false } else { console.log("指定的文档不存在"); } }, (error) => { console.log("监听出错:", error); });
关键说明:
- 用
doc(db, 'users', 文档ID)替代collection(db, 'users'),直接定位到单个文档,而非遍历整个集合。 - 不需要构建
query,因为我们已经明确要查询的文档,只需读取该文档的数据后,用数组的includes方法判断目标值是否存在。 - 注意
parseInt(id)的类型要和animeID数组中的元素类型保持一致(比如数组里是数字就用parseInt,如果是字符串则无需转换)。
内容的提问来源于stack exchange,提问作者ReactLearner
相关产品推荐
相关产品推荐

