我有此代码:
firebase.firestore().collection('items').get()
.then(snapshot => {
Alert.alert(JSON.stringify(snapshot._docs));
snapshot.forEach(doc => {
Alert.alert(doc.id, '=>', doc.data());
});
})
.catch(err => {
Alert.alert('Error getting documents', err);
});
Alert.alert(JSON.stringify(snapshot._docs))
返回一个空数组-因此它找不到任何文档。此集合中有一个文档:
是因为我使用电子邮件地址作为文档ID?
更新
显示其余数据库结构的图像:
我正在尝试搜索PxlmyvjklhTOADngsSQg
下userItems
下的文档字段(以及其他可能在那儿找到的对象)。
更新
这实际上是我要尝试的操作,仅在理论上,我想对.doc(this.state.user.email)
使用通配符:
firebase.firestore().collection('items').doc(**wildcard**).collection('userItems').where("barcode", "==", this.state.text)
但是我知道firebase
是不可能的,所以我尝试获取所有items
,然后在成功检索后通过它们进行解析。
答案 0 :(得分:3)
首先,您将使用私有属性来访问快照对象:
snapshot._docs
这不是正确的方法。从查询中获得的快照是一个QuerySnapshot对象,您应该使用API文档来了解如何处理它。如果要从快照中获取文档数组,请使用其docs
属性。
第二,您的屏幕截图实际上显示了item集合中没有文档。请注意,电子邮件地址标识的文档以斜体显示。这意味着它实际上不是文档,它只是一个“幻像”文档,您可以用来在其下组织名为userItems
的子集合。
查询集合时,只会获得该集合中紧接的文档,而没有任何文档子集合。据说查询以这种方式“浅”。尝试立即在items
中创建带有字段的实际文档,然后查询集合。