2017-06-19 6 views
0

私はこの質問をたくさんここで知っていますが、私はこれについて知りません。これはチャットアプリに関するものです。Firebaseの古いデータを削除します

メッセージがfirebaseデータベースに格納されるとき。時間が経つにつれてそれは大きくなり、私はそれを削除したい。これはいつ削除する必要がありますか?私はちょうど最後の10のデータだけを残したいと思う。それは、もし私がアプリを取り出して再び入ると、それは最後の10センテンスしか表示されず、関数limitToFirstとlimitToLastについて知っています(しかし、これは削除のことではありません)。

私はfirebaseサーバーに支払い、データベースのデータが大きい場合は、より高価になります。私はちょうど少なくとも最後の10文を残したいと思う。 彼らが戻ってきたとき、彼らは最後の10センテンスを見ることができ、これを除いて削除したい。どうすればいいですか?

私は日付を使って答えを見ましたが、私はそれを望んでいません。それは唯一の答えですか?私はそれらを削除するときに私はそれを行う必要がありますか?いつ私は削除機能を呼び出すのですか?

私はそれをほとんど行う方法を知っていますが、いつですか?アプリの中にはたくさんの友達がいて、私はチャット画面を開いて友達とチャットします。その時私はそれらを削除機能を使用して削除する必要がありますか?サーバー支払いのためにこれを保存するにはどうすればよいですか?

私はたくさんの費用がかかりません。私はFirebaseデータベースコンソールに汚れていないことを明確にしたいと思います。削除する必要があります。私は何をしなければならないのですか?私はそれらを削除すべき最良の時は何ですか?それを開くとき?またはそれを閉じるとき?またはユーザーがmyアプリを停止したとき。

答えて

1

これは非常に簡単な方法で実現できます。メッセージを保持しているノードでgetChildrenCount()メソッドを使用すると、メッセージの正確な数を確認できます。 push()メソッドで生成されたランダムキーを識別子として使用している場合、余分なメッセージを削除するのは非常に簡単です。レコードは日付によってデフォルトの順序であるため、簡単にlimitToLast(limit)メソッドを使用してデータベースを照会し、このようなメッセージを削除するよりもすることができます。これを達成するために

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

もう一つの方法は、Cloud Functions for Firebaseを使用することです。

希望します。

+0

ありがとう、いつ私はそれらを一般的に削除すべきですか?ユーザーがメッセージを送信するとき、私は自分のコードでgetChildrenCount()を使用する必要があります。カウントが10を超える場合は、それらを削除する必要がありますか?私はとても混乱している、タイミング。チャットアプリで通常の削除時間を知りたいのですが... –

+0

ユーザーがアプリを起動するたびに、1回だけ使用することをお勧めします。ユーザーがメッセージを送信するたびにではありません。ユーザーが1つのセッションで10個以上のメッセージを送信する場合、10個だけを表示するには、 'limitToLast(10)'メソッドを使用できます。ユーザーが11番目のメッセージを送信するたびにメッセージを削除すると、不要な接続が増えます。一度だけ削除する必要があります。 –

+0

あなたは間違いなく私に感謝しています。あなたがチャットアプリを開いたとき(Chatting、Screenのアクティビティ)を意味します。その時、私は一度削除する必要がありますか? –

0

firebase functionsを使用すると、新しいデータがデータベースに追加されたときに古いデータを削除することができます。これは、最後の100個以下のメッセージを保持することができます。

+0

ああ、タイミングについて教えてくれたので、ありがとう。私はそれらを削除する機能を使用する必要がありますか?自動的に削除する方法はありますか?またはgetChildrenCount()を使用してチェックし続けます。 –

+0

子どもの数をチェックするのに最適なオプション、またはノードごとにノードを使用してジョブをスケジュールする –

+0

MYSQLのようなFirebaseでスケジュールジョブを作成する方法はありますか?ああ私の神様、私はそれを知りませんでした。それは何ですか? –

関連する問題