每个用户仅保留100条新记录,删除Firebase中的旧记录

时间:2020-05-20 07:21:10

标签: javascript reactjs firebase firebase-realtime-database

我有一个feed json,我希望每个用户仅保留100条记录。因此,每次我在其中放置一条新记录时,我都希望删除旧记录。

要获取我想保留的帖子,

feedRef = firebase.database().ref().child('feed').child(user_id).limitToLast(100);

如何删除其他旧版本?

2 个答案:

答案 0 :(得分:2)

ringbuffer解决方案就足够了吗? 您预先分配了100条记录。通过存储指向该记录的计数器来跟踪哪个是最新的。 创建新记录后,如果需要,可更新模100计数器以将其重置为开始,然后将记录存储在新计数器指向的位置。

这样,较新的记录将覆盖最旧的记录,并且不需要其他维护。

替代: 运行cron作业,以删除较旧的条目。例如。查询100个最新条目并采用最早的时间戳,然后删除早于该时间戳的记录。

但这承担了维护任务,并且不能保证每个用户最多只能有100条记录。 但这可能无需更改您的数据库结构即可实现。

答案 1 :(得分:1)

您可以实现一个Firebase函数,该函数侦听child_added对象的每个user_id上的feed。在firebase函数中,每次添加新记录时,您都可以找到并删除该user_id的最旧记录,从而每次保证为您提供100个项目。