Firestore: прослушивание документов во вложенной коллекции

Я пытаюсь прослушать документы в коллекции из кода Python, используя пример из документации Firestore. Я получаю правильные данные при прослушивании корневой коллекции, но ничего не получаю при прослушивании вложенной коллекции. Вот мой код:

db = firestore.client()

# Create a callback on_snapshot function to capture changes
def on_snapshot(col_snapshot, changes, read_time):
    print(col_snapshot, type(col_snapshot))
    print(changes, type(col_snapshot))

root_collection = u'shared-streams'
subcollection = u'shared-streams/eFC4T~lLyT/messages'


# Watch the root collection query (1)
col_query = db.collection(root_collection)
query_watch = col_query.on_snapshot(on_snapshot)

# Watch the subcollection query (2)
col_query = db.collection(subcollection)
query_watch = col_query.on_snapshot(on_snapshot)

Подколлекция существует в Firestore и не пуста. Но в первом случае (1) я получил непустые списки элементов и изменений (и обновлений), а в другом случае (2) просто два пустых списка (и ничего при обновлении подколлекции). Поскольку я знаю, что нет никаких различий в корневых / вложенных коллекциях, поэтому, пожалуйста, объясните, где я не прав.

UPD: Подобный код в node.js работает нормально, поэтому похоже, что это ошибка в клиентской библиотеке Python.

Фрагмент node.js:

var db = admin.firestore();

var query = db.collection('shared-streams/eFC4T~lLyT/messages')

var observer = query.onSnapshot(querySnapshot => {
  console.log(`Received query snapshot of size ${querySnapshot.size}`);
  // ...
}, err => {
  console.log(`Encountered error: ${err}`);
});

0 ответов

Взгляните на мой урок:

my_ref = database.collection("test").limit(2)

# show the values from database
try:
    docs = my_ref.stream()
    for doc in docs:
         print(u'Doc Data:{}'.format(doc.to_dict()))
except:
    print(u'Missing data')
Другие вопросы по тегам