Слушатель облака Firestore, не работающий над коллекцией внутри коллекции - PullRequest
0 голосов
/ 24 апреля 2019

Я настраиваю программу, которая использует Admin Sdk из Firebase, она должна иметь возможность обновлять любые изменения или документы, добавленные в коллекцию. Проблема в том, что он не обновляется, если это коллекция / документ / коллекция / документ / коллекция.

мой код такой. (не работает)

import time
import firebase_admin
from firebase_admin import credentials
from google.cloud import firestore
def on_snapshot(doc_snapshot, changes, read_time):
    for doc in doc_snapshot:
        print(u'Received document snapshot: {}'.format(doc.id))

cred = credentials.Certificate('cred.json')
default_app=firebase_admin.initialize_app(cred)
db = firestore.Client()
doc_ref = db.collection('company').document('main').collection('restaurant').document('info').collection('orders')
doc_watch = doc_ref.on_snapshot(on_snapshot)
#for this example i will use a while (it works too)
while True:
   time.sleep(1)
   print ('processing...')

но это работает с этим doc_ref

doc_ref = db.collection('orders')

а также вот так

db.collection('company').document('main').collection('restaurant')

я что-то не так делаю?

1 Ответ

2 голосов
/ 25 апреля 2019

Клиенты Firestore не предоставляют единого API для прослушивания всех документов в коллекции и во вложенных вложенных коллекциях.Клиенты Firestore могут прослушивать результаты запроса, который должен быть выполнен для одной коллекции.

Документы во вложенных коллекциях фактически не являются частью каких-либо «родительских» коллекций.Каждая подколлекция представляет собой собственную независимую коллекцию и требует своего собственного запроса для прослушивания.Поэтому, если вы хотите узнать, изменяется ли какой-либо документ в коллекции или вложенная вложенная коллекция, вам нужно добавить прослушиватель для каждой независимой коллекции, независимо от того, где она находится.Это означает, что вы также должны знать имена всех вложенных коллекций - для запросов нет подстановочных знаков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...