对集合中所有文档的 Firestore 'get' 查询不返回任何文档

ewi*_*ard 1 collections firebase react-native 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);
    });
Run Code Online (Sandbox Code Playgroud)

Alert.alert(JSON.stringify(snapshot._docs))返回一个空数组-所以它没有找到任何文件。此集合中有一个文档:

在此处输入图片说明

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

更新

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

在此处输入图片说明

我正在尝试搜索PxlmyvjklhTOADngsSQguserItems(以及其他会去那里的对象)下的文档字段。

更新

这基本上就是我想要做的,只是在理论上我想使用通配符.doc(this.state.user.email)

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

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

Dou*_*son 5

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

snapshot._docs
Run Code Online (Sandbox Code Playgroud)

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

其次,您的屏幕截图实际上显示项目集合中没有文档。请注意,由电子邮件地址标识的文档以斜体显示。这意味着它实际上并不是一个文档——它只是一个“幻影”文档,您用来在它下面组织一个名为userItems.

当您查询一个集合时,您只会得到该集合中直接存在的文档,而没有它们的文档子集合。以这种方式,查询被称为“浅层”。尝试创建一个包含字段的实际文档items,然后查询集合。