Firebase: зачем назначать Firestore .onSnapshot для переменной? - PullRequest
0 голосов
/ 16 октября 2018

Просмотр документации Firestore показан ниже в качестве примера того, как прикрепить прослушиватель обновлений в реальном времени к данным Firestore.Мой вопрос: зачем мне когда-либо назначать слушателя для переменной?Другими словами, я понимаю, что можно присвоить обещание переменной, чтобы оно могло быть return ed или await ed или .push ed для массива, но ничего из этого, кажется, не применимо к слушателю в реальном времени, если только яупускаю суть?... зачем присваивать .onSnapshot var?

var doc = db.collection('cities').doc('SF');

var observer = doc.onSnapshot(docSnapshot => {
  console.log(`Received doc snapshot: ${docSnapshot}`);
  // ...
}, err => {
  console.log(`Encountered error: ${err}`);
});

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

firebase.firestore.CollectionReference или firebase.firestore.DocumentReference является обязательной переменной для вызова метода .onSnapshot.Одна общая muteListener функция может получить любую ссылку для отключения / отмены подписки.Предполагая, что вы слушаете адресный документ:

var shipToLocationDocument = null;

function muteListener(ref){
    return ref.onSnapshot(() => {});
}

shipToLocationDocumentListener = function () {
    return shipToLocationDocumentRef.onSnapshot(function (shipToLocationDocumentSnapshot) {
        //callback function to fire
        shipToLocationDocumentStateHandler(shipToLocationDocumentSnapshot);
    }, function(error) {
        console.log("shipToLocationDocumentSnapshot error " + error.message);
    });
};
//call the function
shipToLocationDocumentListener();

//callback function
function shipToLocationDocumentStateHandler(shipToLocationDocumentSnapshot){
    if(shipToLocationDocumentSnapshot.exists){
        shipToLocationDocument = shipToLocationDocumentSnapshot;
        displayShipToLocation(shoppingCartDocument.data().shipTo); //actually we have all the info here already
    } else {
        shipToLocationDocument == null;
    }
}
0 голосов
/ 16 октября 2018

Позволяет удалить наблюдателя позже.В вашем случае вы бы отписались, позвонив по номеру observer(), поэтому мы обычно называем это unsubscribe, как в разделе отсоединить слушателя .

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