【发布时间】:2020-03-13 06:53:22
【问题描述】:
在我的项目中,当每个用户进入应用程序 (Swift-iOS) 时,他们会将时间戳字段更新为当前时间之后的 24 小时。 Firestore 中的数据树如下图所示。每个用户数据作为文档,包含在“用户”集合中。
users-collection
user1-document
username: nameA
timestamp: 1574102072
user2-document
username: nameB
timestamp: 1574102234
除非他们在 24 小时内再次进入应用,并且基于他们注册的时间戳的时间到了,否则我想发送推送通知 (FCM)。
我计划安排云功能,但在那一刻,云功能必须定期(例如每 5 分钟)读取太多文档并找到结束的时间戳,以发送通知。这确实是一种代价高昂的方式。有没有其他方法来处理这个问题?
【问题讨论】:
-
“阅读过多文档”是什么意思?您无需为查询未返回的文档付费。
-
亲爱的Doug,云功能需要定期检查每个用户的时间戳数据,以了解是否结束。因此,要读取每个用户的时间戳数据,函数需要获取用户集合中每个用户的文档,这会带来成本。 CF:: 让 usersRef = db.collection('users');让 allUsers = usersRef.get() .then(snapshot => { snapshot.forEach(doc => { console.log(doc.id, '=>', doc.data().timestamp); }); }) .catch(err => { console.log('获取文档时出错', err); });
标签: swift firebase google-cloud-firestore firebase-cloud-messaging google-cloud-functions