在Firestore中迭代集合内的集合

时间:2018-05-25 16:54:54

标签: python firebase google-cloud-firestore

如果我迭代user集合中的每个user_ref = db.collection(u'users') for user_collection in user_ref.get(): print(user_collection.id, file = sys.stderr) ,我会正确地打印出每个user.id:

user.id

现在,当我尝试在用户集合中的每个文档中迭代集合时,打印user_ref = db.collection(u'users') for user_collection in user_ref.get(): print(user_collection.id, file = sys.stderr) s2_ref = user_ref.document(user_collection.id).collection(u'preferences') for s2 in s2_ref.get(): try: print(s2.id, file = sys.stderr) except google.cloud.exceptions.NotFound: pass 的原始迭代不会完全运行:

var orgChart = new getOrgChart(peopleElement, {
                primaryFields: ["name", "title", "phone", "mail"],
                photoFields: ["image"],
                expandToLevel: 100,
                layout: getOrgChart.MIXED_HIERARCHY_RIGHT_LINKS
});

我已经包含了绕过空集合的异常。

如何正确完成迭代?

1 个答案:

答案 0 :(得分:0)

我只需要为第一组结果创建一个数组,然后分别迭代每个id:

    user_id_array = []
    for user_collection in user_ref.get():
        user_id_array.append(user_collection.id)
    for user_id in user_id_array:
        try:
            suscription_ref = doc_ref.document(user_id).collection(u'suscriptions').document(user_id).get()
            print(suscription_ref.id,file = sys.stderr)
        except google.cloud.exceptions.NotFound:
            pass

需要更多时间,但它会让你到那儿。