如何在Firestore中获取子集合引用[Node JS]

时间:2018-03-16 13:21:56

标签: javascript node.js google-cloud-firestore

基本上,我的数据结构如下......

  

Root Collection =“业务”

     
-Docs of "Businesses" = various restaurant names
    For every business doc, there is a deals subcollection
        For every deals subcollection, there are documents of deals
  

我需要做的是循环每个企业拥有的每笔交易并检查条件并在满足条件时删除该交易,这与问题无关。我遇到的问题是在 NODE JS 中获取子集合引用的子集合和文档。以下是我到目前为止的情况。

function delDeals()
{

businessesCopy.forEach(element)

{
    var dealsRef = db.collection('businesses').doc(element);

    dealsRef.getCollections().then(collections => {
        collections.forEach(collection => {

            var foodRef = db.collection('businesses').doc(element);
            var query = citiesRef.where('capital', '==', true).get()
            .then(snapshot => {
            snapshot.forEach(doc => {
            console.log(doc.id, '=>', doc.data());
            });
    })
    .catch(err => {
        console.log('Error getting documents', err);
    });


        });
    });

}

这里,enterprisesCopy =一个数组,其中填充了对根businessess集合中所有业务文档的引用。

Dealsref基本上会创建对我使用forEach循环的每个文档的引用。

在我dealsRef.get()之后,我正在努力为每个循环而努力,这会获取我循环的每个业务文档的子集合。在for循环中,我想要做的是能够获取每个业务doc的所有子集合,然后能够循环遍历每个业务的每个交易子集合的每个文档(Deal)并删除该交易doc如果它满足一定的条件。我不确定如何为每个企业提供交易子集合的交易文档的参考。

1 个答案:

答案 0 :(得分:0)

我认为你在寻找:

dealsRef.getCollections().then(collections => {
  collections.forEach(collection => {
    collection.where('capital', '==', true).get().then({              
      snapshot.forEach(doc => {
      console.log(doc.id, '=>', doc.data());
    });
  })
})