对集合中的所有文档进行Firestore“获取”查询不会返回任何文档

时间:2018-08-26 02:01:30

标签: firebase react-native collections google-cloud-firestore react-native-firebase

我有此代码:

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))返回一个空数组-因此它找不到任何文档。此集合中有一个文档:

enter image description here

是因为我使用电子邮件地址作为文档ID?

更新

显示其余数据库结构的图像:

enter image description here

我正在尝试搜索PxlmyvjklhTOADngsSQguserItems下的文档字段(以及其他可能在那儿找到的对象)。

更新

这实际上是我要尝试的操作,仅在理论上,我想对.doc(this.state.user.email)使用通配符:

firebase.firestore().collection('items').doc(**wildcard**).collection('userItems').where("barcode", "==", this.state.text)

但是我知道firebase是不可能的,所以我尝试获取所有items,然后在成功检索后通过它们进行解析。

1 个答案:

答案 0 :(得分:3)

首先,您将使用私有属性来访问快照对象:

snapshot._docs

这不是正确的方法。从查询中获得的快照是一个QuerySnapshot对象,您应该使用API​​文档来了解如何处理它。如果要从快照中获取文档数组,请使用其docs属性。

第二,您的屏幕截图实际上显示了item集合中没有文档。请注意,电子邮件地址标识的文档以斜体显示。这意味着它实际上不是文档,它只是一个“幻像”文档,您可以用来在其下组织名为userItems的子集合。

查询集合时,只会获得该集合中紧接的文档,而没有任何文档子集合。据说查询以这种方式“浅”。尝试立即在items中创建带有字段的实际文档,然后查询集合。