我有一个到期条件,例如gmail,当达到到期时间后,便从查询中删除文档,但是直到重新加载或关闭应用程序后,它才起作用,而不是实时。
代码:
{{1}}
问题是它可以工作,只是不是实时的。我想念什么吗?
答案 0 :(得分:0)
问题来自此行:
.where('removeAt', isGreaterThan: Timestamp.now())
这是在您运行查询时评估的,这意味着在查询开始时会设置Timestamp.now()
。因此它将在您启动查询时获得未过期的文档,但是在监听器处于活动状态时不会动态更新(因为Timestamp.now()
不会重新评估)。
(当前)在Firestore查询中无法动态更新时间戳。但是幸运的是,您拥有在客户端中自行实现动态到期的所有信息。由于您知道每个文档的removeAt
的值,因此可以运行定期检查,并删除或隐藏在快照侦听器处于活动状态时过期的文档。