4

トランザクションドキュメントの2番目の段落から:

ここでの目的は、クライアントが送信されるチャットメッセージの総数を増やすことです(これを実装するためのより良い方法があることをしばらく無視してください)。

これを実装するためのいくつかの標準的な「より良い方法」は何ですか?

具体的には、最新の50レコードを取得するなどの方法を検討しています。これには、リストの最後から開始する必要があるため、最後のレコードが何であるかを判別する方法が必要です。

私が見たオプション:

  • トランザクションを使用して、レコードが追加されるたびにカウンターを更新します。順序付けには、setPriority()でカウンター値を使用します。
  • forEach()は親であり、すべてのレコードを読み取り、クライアントで独自の並べ替え/フィルタリングを行います
  • Firebaseテーブルを分析し、「mostRecentMessages」や「totalNumberOfMessages」などのインデックス付きリストを作成するサーバーコードを記述します

明らかな選択肢がありませんか?

4

1 に答える 1

5

リスト内の最後の50レコードを表示するには、次のように「limit()」を呼び出すだけです。

var data = new Firebase(...);
data.limit(50).on(...);

Firebase要素は優先度の高い順に並べられており、優先度が一致する(または何も設定されていない)場合は、字句的に名前で並べ替えられます。push()コマンドは、時系列に並べられた要素を自動的に作成するため、push()を使用している場合は、limit()を使用するために追加の作業は必要ありません。

リスト内の要素をカウントするには、「値」コールバックを追加してから、スナップショットを反復処理する(または前述のトランザクションアプローチを実行する)ことをお勧めします。ドキュメントの注記は、実際にはまだリリースされていないいくつかの今後の機能に言及しており、最初に要素をロードせずに要素をカウントできるようになります。

于 2012-07-13T00:05:41.477 に答える