首页 > 解决方案 > Firebase Firestore Android 删除多人游戏文档

问题描述

所以我有一个游戏,其中两个设备/用户连接到一个 Firestore 游戏文档。在游戏结束时,我将游戏结果加载给两个用户,然后他们继续进行另一个游戏。我现在的问题是考虑删除已完成游戏对象的最佳方法。一旦游戏完成,它就不再需要在 Firestore 中了。我只是在最后测试了两个用户的推杆gameDocRef.delete(),但偶尔一个玩家删除它太快而另一个无法加载结果。

是否有更好/自动化的方式来清理已完成的文档?也许是 Firebase 函数之类的?任何建议都值得赞赏:)

标签: androidfirebasegoogle-cloud-firestore

解决方案


你可以存储两个值;例如。“玩家一承认”和“玩家二承认”,

为了确认,当双方玩家都拿到了比赛结果时——

并且只删除他们都承认的那些文件

(甚至可能使用 Cloud Functions 清理脚本,而不是客户端)。

a) 在查看可用事件时,更新触发器将出现最合适的情况:

providers/cloud.firestore/eventTypes/document.update

不利的一面是,它会经常被触发,因为它是每个文档而不是每个字段。

b) 或者,可以批量删除,通过 HTTP 触发,在另一台主机上使用 cronjob。

是一个示例,使用 App Engine Cron(作为crontabGCE 上的 Linux 的替代品)。


推荐阅读