Cloud Firestore:如何通过ID获取指定saleOrder条目?我的查询无效
解决Firebase通过ID获取saleOrder条目失败的问题
你当前的查询逻辑存在问题:Firebase自动生成的文档ID是文档本身的属性,并不默认存在于文档的数据字段中。你用where('id', '==', saleOrderId)是在文档的数据里查找名为id的字段,而非匹配文档ID,所以查不到结果。
给你两种正确的解决方式:
方式一:直接通过文档引用获取(推荐)
已知文档ID时,直接定位到该文档,比查询更高效:
const docRef = doc(db, 'customers', customerId, 'saleOrders', saleOrderId); const docSnapshot = await getDoc(docRef); if (docSnapshot.exists()) { console.log('获取到的saleOrder数据:', docSnapshot.data()); } else { console.log('未找到对应的saleOrder文档'); }
方式二:如果手动存储了文档ID到数据字段
如果你创建saleOrder文档时,已把文档ID手动存入数据中的id字段,需检查两点:
- 确认数据中的字段名确实是
id(注意大小写) - 确认
saleOrderId的类型和数据字段id的类型一致(比如都是字符串)
另外还要排查两个常见问题:
- 检查
saleOrderId的取值是否正确,有没有拼写错误、空格或格式问题 - 确认Firebase安全规则允许你读取该路径下的文档,权限不足也会导致查询无返回结果
内容的提问来源于stack exchange,提问作者Lai Hua
相关产品推荐
相关产品推荐

