Я слушаю коллекцию в 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.