我想知道该功能是否再次运行是否刷新了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')。”
我的数据库仍处于公共模式下进行测试,因此我不确定这到底是什么。
答案 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) => { ... })
}