在我的项目中,当每个用户进入应用程序(Swift iOS(时,他们会将时间戳字段更新为当前时间后24小时。Firestore中的数据树如下所示。每个用户数据作为文档,包含在"用户"集合中。
users-collection
user1-document
username: nameA
timestamp: 1574102072
user2-document
username: nameB
timestamp: 1574102234
除非他们在24小时后再次进入应用程序,并且基于他们注册的时间戳的时间到了,否则我想发送推送通知(FCM(。
我计划安排云功能,但在那一刻,云功能必须定期读取太多文档(例如,每5分钟(,并找到结束的时间戳,才能发送通知。这是一种非常昂贵的方式。有没有其他办法来处理这个问题?
我建议您的查询按时间过滤文档,而不是查询整个集合并在客户端上检查时间,这样您只会得到所需的文档。请参阅文档。例如:
usersRef = db.collection('users').where('timestamp', '>', current_time);
如果您将结果集限制为只查找您实际需要的文档,那么查询将更快、更便宜。