FIRESTORE - 如何在文档中获取集合的值?

Posted

技术标签:

【中文标题】FIRESTORE - 如何在文档中获取集合的值?【英文标题】:FIRESTORE - How to fetch values of a collection inside a document? 【发布时间】: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 时,我该如何循环它的文档。

【问题讨论】:

【参考方案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,您需要先制定路线。 ;)

以上是关于FIRESTORE - 如何在文档中获取集合的值?的主要内容,如果未能解决你的问题,请参考以下文章

Firestore - 从集合中的文档中获取集合条目

Firestore - 如何在将文档添加到集合后获取文档 ID

Firestore:如何在集合中获取随机文档

如何获取firestore集合下的文档数量? [复制]

从 id 数组中获取 firestore 文档列表

如何按文档 ID 从 Firebase Firestore 获取数据 - iOS?