Firestore快照无法正确更新

时间:2019-09-21 22:06:03

标签: javascript firebase google-cloud-firestore

我想知道该功能是否再次运行是否刷新了Firestore文档快照。

在这里,我试图读取'active'属性,该属性返回一个布尔值。

不幸的是,如果我手动将文档中的值更改为'false',即使重新加载(并且应该重新运行该函数)之后,读数仍显示为'true'。

// 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 :(得分:1)

您需要致电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) => { ... })
}