代码之家  ›  专栏  ›  技术社区  ›  ewizard

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

  •  1
  • ewizard  · 技术社区  · 6 年前

    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

    更新

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

    enter image description here

    PxlmyvjklhTOADngsSQg 在下面 userItems

    更新

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

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

    但我知道这是不可能的 firebase ,所以我想把所有的 items

    1 回复  |  直到 6 年前
        1
  •  4
  •   Doug Stevenson    6 年前

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

    snapshot._docs
    

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

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

    查询集合时,只会获取该集合中立即存在的文档,而不会获取其任何文档子集合。这样的问题被认为是“肤浅的”。尝试创建一个实际的文档,其中的字段位于 items