为什么我的所有文档都没有在Firestore中更新?

时间:2018-09-17 03:38:24

标签: python firebase google-cloud-firestore firebase-admin

我正在使用python尝试向Firestore集合中的750多个文档中添加字段,但是当尝试执行此操作时,仅更新了我的前55个文档。我认为这是由于Firestore的写入限制而发生的,但并不清楚原因。

收藏结构

enter image description here

注意: actividades是一个数组,大小约为20个元素,每个元素只有3个属性。

enter image description here

CODE

import firebase_admin
from firebase_admin import credentials, firestore

cred = credentials.Certificate('avancesAccountKey.json')
default_app = firebase_admin.initialize_app(cred)
db = firestore.client()

count = 0
avances = db.collection('avances').get()
for e in avances:  
    db.collection('avances').document(e.id).update({
        'vigente': False
    })
    count += 1

print(count) # count is 55 when trying to update, 757 otherwise

到底发生了什么,我该如何解决?

1 个答案:

答案 0 :(得分:1)

在遍历集合时,您不应对其进行突变。取而代之的是,获取文档引用,然后进行迭代。

count = 0
documents = [snapshot.reference for snapshot in db.collection('avances').get()]
for document in documents:
    document.update({u'vigente': False})
    count += 1

参考:https://github.com/GoogleCloudPlatform/google-cloud-python/issues/6033

更新:看来Firestore python客户端确实有一个20 second timeout for the generator returned from a query