2017-06-19 106 views
0

我在这里知道这个问题很多,但我不知道这一点。这是关于聊天应用程序。删除Firebase中的旧数据

当消息被存储到firebase数据库。随着时间的推移它会变得越来越大,我想删除它。我应该什么时候删除这个?我只想留下最后10个数据。这意味着如果我离开了应用程序,并再次进入,它似乎只有最后10句,我知道的功能limitToFirst和limitToLast(但这不是删除的东西。)

如果我支付firebase服务器,你知道,如果数据库的数据量大将会更加昂贵。但我只想至少留下最后10句话。 当他们确实回来时,他们可以看到最后10句话,并希望删除除此之外的内容。我该怎么做呢?

我看到了使用日期的答案,但我不想那样。那是唯一的答案吗?如果我必须这样做,当我删除它们?我什么时候调用删除功能?

我知道如何做到这一点,但什么时候?如果在应用程序中,有很多朋友,我打开聊天屏幕聊天我的朋友。那个时候我应该使用remove函数删除它们?我如何保存这个服务器付款?

我不想花很多钱。我希望它们在我的Firebase数据库控制台中清晰明了,而不是肮脏。所以想删除它们。我必须做哪个?哪个时间是我应该删除它们的最佳时间?什么时候打开它?或关闭它时?或者当用户停止我的应用程序。

回答

1

您可以通过一种非常简单的方式实现此目的。您可以在持有消息的节点上使用getChildrenCount()方法查看消息的确切数量。如果您使用push()方法生成的随机密钥作为标识符,那么删除额外的消息非常容易。由于记录是在默认情况下按日期的订单,你可以使用limitToLast(limit)方法很容易地查询数据库,比删除这样的邮件:

yourRef.child("messages").child(messageId).removeValue(); 

另一种方式实现这一目标是使用Cloud Functions for Firebase

希望它有帮助。

+0

非常感谢,我应该何时将其删除?当用户发送消息时,那我必须在我自己的代码中使用getChildrenCount()。如果计数大于10,那么我应该删除它们?我很困惑,时机。想知道通常在聊天应用程序中删除的时间... –

+0

我建议您每次用户启动应用程序时使用一次。并非每次用户发送消息。如果用户在一个会话中发送超过10条消息,只显示10条消息,则可以使用'limitToLast(10)'方法。如果每次用户发送第11条消息时都会删除一条消息,这意味着您不需要更多的连接。您只需要删除一次。 –

+0

耶你肯定对我很有帮助谢谢。你的意思是当用户打开聊天应用(聊天,屏幕活动)。那一次,我应该删除一次? –

0

你可以使用firebase functions删除旧数据,当新数据库添加到最佳时间时,可以保留最近的100条消息或更少。

+0

哦,你告诉我关于时间,所以谢谢。我必须使用它们的功能来删除它们?有没有办法自动删除它们?或者我只是使用getChildrenCount()继续检查它。 –

+0

检查childrencount最佳选择,或通过每个时间段使用节点安排作业 –

+0

有没有什么办法可以像MYSQL一样在Firebase中安排作业?我的天啊,我不知道。那是什么? –