【问题标题】:Firestore query documents with only collections insideFirestore 查询文档,里面只有集合
【发布时间】:2018-07-07 23:25:52
【问题描述】:

我有一个 Firestore 集合,里面有一些文档。文档仅包含集合而不包含任何字段。因此,当我尝试获取根集合中的所有文档时,我将快照大小设为零。有没有办法获取没有字段但里面有一些集合的文档?

我的firestore结构是

还可以看到文档的id用斜体显示

获取数据的代码

  db.collection("transactions").get()
    .then(snapshot => { 
      console.log(snapshot.size); returns zero
    })

【问题讨论】:

  • 我问了同样的问题:stackoverflow.com/questions/47240469/…
  • @J.Doe 不是同一个问题。您知道文档名称,因此您可以使用 getCollections 方法,我评论了您的问题。我的问题是如何获取其中只有集合的文档名称。
  • 据我所知,没有相应的 API。但是,文档 ID 以斜体显示是因为顶级文档已被删除,而不是因为它们仅包含集合。这些仍将在 Firebase 用户界面中可见,但您将无法查询它们,这就是您的快照长度为零的原因。
  • 顶级文档已被删除??我没听懂
  • 因此,例如,如果您在某个时候删除了“事务”集合,则删除不会是递归的,因此下面的文档仍然存在。如果文档没有字段或集合为空,这也是正确的。 Firebase 用户界面以斜体显示它们以表明它们不能被查询。

标签: javascript firebase google-cloud-firestore


【解决方案1】:
let date = '2017-12-20' //date to be set in doc

db.collection("transactions").doc(date).set({
  //set an empty object for each doc in transaction before your method 
  //of setting data 
  //This will create a field for each doc in transaction
})
.then(()=>{
  //your method of setting data here.
})
//Your query method here.
//Now you will be able to query the docs in collection - transaction.

【讨论】:

    【解决方案2】:

    改编自Get Data with Cloud Firestore

    db.collection("transactions").doc("2018-01-02").collection("education-1").get()
        .then(function(querySnapshot) {
            querySnapshot.forEach(function(doc) {
                // doc.data() is never undefined for query doc snapshots
                console.log(doc.id, " => ", doc.data());
            });
        })
        .catch(function(error) {
            console.log("Error getting documents: ", error);
        });
    

    【讨论】:

      猜你喜欢
      • 2018-05-09
      • 2020-07-26
      • 1970-01-01
      • 2021-07-12
      • 2021-04-08
      • 2021-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多