我有一个feed
json,我希望每个用户仅保留100条记录。因此,每次我在其中放置一条新记录时,我都希望删除旧记录。
要获取我想保留的帖子,
feedRef = firebase.database().ref().child('feed').child(user_id).limitToLast(100);
如何删除其他旧版本?
答案 0 :(得分:2)
ringbuffer解决方案就足够了吗? 您预先分配了100条记录。通过存储指向该记录的计数器来跟踪哪个是最新的。 创建新记录后,如果需要,可更新模100计数器以将其重置为开始,然后将记录存储在新计数器指向的位置。
这样,较新的记录将覆盖最旧的记录,并且不需要其他维护。
替代: 运行cron作业,以删除较旧的条目。例如。查询100个最新条目并采用最早的时间戳,然后删除早于该时间戳的记录。
但这承担了维护任务,并且不能保证每个用户最多只能有100条记录。 但这可能无需更改您的数据库结构即可实现。
答案 1 :(得分:1)
您可以实现一个Firebase函数,该函数侦听child_added
对象的每个user_id
上的feed
。在firebase函数中,每次添加新记录时,您都可以找到并删除该user_id
的最旧记录,从而每次保证为您提供100个项目。