Снимок Firestore не обновляется должным образом - PullRequest
0 голосов
/ 22 сентября 2019

Мне было интересно, обновляется ли моментальный снимок документа Firestore, если функция запускается снова.

Здесь я пытаюсь получить показание свойства 'active', которое возвращает логическое значение.

К сожалению, если я вручную изменю значение в документе на «ложь», показания по-прежнему будут отображаться как «истина», даже после перезагрузки (и предположительно повторного запуска функции).

// Check if user is logged in
auth.onAuthStateChanged(user => {
    if (user) {
        findSubscription(user);
    } else {
        console.log('logged out')
    }
})

const findSubscription = (user) => {

    // Get document
    db.collection('stripe_customers')
        .doc(user.uid)
        .collection('subscription_info')
        .doc('subscription_object')
        .get()
        .then((doc) => {

            // Get number of keys in document
            const numberOfKeys = Object.keys(doc.data()).length;

            // Check if numverOfKeys is > 0 (it is not if the user has never had a subscription before)
            if (numberOfKeys !== 0) {

                // Get subscription status
                const subscriptionStatus = doc.data().subscription.plan.active;
                console.log(subscriptionStatus);

Иногда яполучить следующий консольный журнал.

"Не удается загрузить XMLHttpRequest ('google api url') из-за проверок контроля доступа."

Моя база данных все еще находится в открытом режиме для тестирования, поэтому я не совсем уверен, что это такое.

1 Ответ

0 голосов
/ 22 сентября 2019

Вам нужно позвонить onSnapshot() вместо get() (https://firebase.google.com/docs/firestore/query-data/listen)

let unsubscribe = null;

const addSubscription = (user) => {
    // Subscribe to document updates 
    // (called immediately & every subsequent change) 
    unsubscribe = db.collection('stripe_customers')
        .doc(user.uid)
        .collection('subscription_info')
        .doc('subscription_object')
        .onSnapshot((doc) => { ... })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...