【问题标题】:How to get subcollection references in Firestore [Node JS]如何在 Firestore [Node JS] 中获取子集合引用
【发布时间】:2018-03-16 13:21:55
【问题描述】:

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

根集合 = “企业”

-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);
    });


        });
    });

}

这里,businessCopy = 一个数组,其中包含对根业务集合中所有业务文档的引用。

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

在我执行dealsRef.get() 之后,我在每个循环中都在苦苦挣扎,它会获取我循环通过的每个业务文档的子集合。在那个 for 循环中,我想要做的是能够获取每个业务文档的所有子集合,然后能够遍历每个业务的每个交易子集合的每个文档(交易),如果满足,则删除该交易文档一定的条件。我不完全确定如何获取每个企业的交易子集合的交易文档的参考。

【问题讨论】:

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


    【解决方案1】:

    我想你正在寻找:

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

    【讨论】:

    • 我的代码现在正在运行,但没有按照我的需要删除子集合的文档。下面是我运行的两个函数的链接——当我盯着它看了一段时间后,你能看出问题出在哪里吗?我看不出哪里出了问题。 @frank van puffelen jsfiddle.net/y0ms574d
    猜你喜欢
    • 1970-01-01
    • 2019-02-17
    • 2021-01-15
    • 1970-01-01
    • 2022-12-06
    • 2020-12-28
    • 2020-11-26
    • 2021-10-31
    相关资源
    最近更新 更多