【问题标题】:FIRESTORE - How to fetch values of a collection inside a document?FIRESTORE - 如何在文档中获取集合的值?
【发布时间】:2018-04-09 22:17:10
【问题描述】:

在我的 Firestore 数据库中,我有一个集合 APP

它有一个文档doc1

doc1还有一个子集合coll1

考虑以下示例。

let db = firebaseApp.firestore();

db.collection('APP').doc('doc1').get()
  .then(doc => {
    let doc1Data = doc.data();
  });

我怎样才能检查响应中的集合。或者当我已经知道有一个子集合 coll1 时,我该如何循环它的文档。

【问题讨论】:

    标签: node.js database firebase google-cloud-firestore


    【解决方案1】:

    如果您不知道集合 id,您可以使用 listCollectionIds 方法获取全部:

    var firestore = require('firestore.v1beta1');
    
    var client = firestore.v1beta1({
      // optional auth parameters.
    });
    
    var formattedParent = client.anyPathPath("[PROJECT]", "[DATABASE]", "[DOCUMENT]", "[ANY_PATH]");
    
    client.listCollectionIds({parent: formattedParent}).then(function(responses){
        var collectionIds = responses[0];
        for (var i = 0; i < collectionIds.length; ++i) {
            // doThingsWith(collectionIds[i])
        }
    })
    .catch(function(err) {
        console.error(err);
    });
    

    但是,听起来您已经知道它的名称为 col1,所以更简单 - 只需引用它:

    db.collection('APP').doc('doc1').collection('col1').get()
        .then(snapshot => {
            snapshot.forEach(doc => {
                console.log(doc.id, '=>', doc.data());
            });
        })
        .catch(err => {
            console.log('Error getting documents', err);
        });
    

    【讨论】:

    • 谢谢。听起来不错。但是快照上有没有任何方法可以让我们知道它在循环时是否有子集合(第二个代码片段)。只是为了让事情更容易。
    • 没有实时系统监控的独立信息。
    • 如果您使用的是express,您需要先制定路线。 ;)
    猜你喜欢
    • 1970-01-01
    • 2018-04-09
    • 2019-09-24
    • 2021-08-23
    • 2018-03-29
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2021-11-04
    相关资源
    最近更新 更多