onSnapshot возвращает пустые данные об изменении документа при добавлении change.type - PullRequest
0 голосов
/ 05 октября 2019

Я слушаю коллекцию в Firestore, используя onSnapshot. Каждый раз, когда я добавляю некоторые данные из моего бэкэнда Python, они отражаются в консоли Firebase, но не в моем пользовательском интерфейсе.

Я правильно проверил, что я слушаю правильную коллекцию и мои обратные вызовы правильные, ниже приведен мой код,Когда я удаляю change.type, querySnapshot сначала дает мне пустые данные изменений, а затем данные, которые я добавил из моего бэкэнда.

from google.cloud import firestore

db = firestore.Client.from_service_account_json(CREDENTIALS_FILE)

collection_name = 'mycollection'
collection_ref = db.collection(collection_name)

message = {
 'data': 'testing'
}

collection_ref.add(message)
function subscribe_to_notifs(collection_name) {
 var firestore_db = firebase.firestore();
 var collection_ref = firestore_db.collection(collection_name);

 const handleActivitySubscriptionWithInvocation = countFunctionInvocation(handleActivitySubscription, 1);
 collection_ref.onSnapshot(handleActivitySubscriptionWithInvocation);
}

function handleActivitySubscription(querySnapshot) {
 querySnapshot.docChanges().forEach(function(change) {
   console.log(change.doc.data()); // Here I get the data

   if(change.type === 'added') {
    console.log(change.doc.data()); // Here I get an empty response i.e {}
   }
 });
}

/* 
Firestore onSnapshot() sends initial payload which I don't want.
I only need to listen for updates in a collection
This function will make sure that the `subscription_function` is called 2nd time,
so that we get only the updates from a collection. 
*/
function countFunctionInvocation(subscription_function, invoke_before_execution) {
    var count = 0;
    return function (args) {
        count++;
        if (count <= invoke_before_execution) {
            return true;
        }
        else {
            return subscription_function(args, count);
        }
    };
}

Я ожидаю, что некоторые данные в change.doc.data(). В чем может быть причина этого?

Примечание. Изначально у меня нет документов в моей коллекции, когда я получаю некоторые данные, я помещаю их в Firestore, используя Python Admin SDK.

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