2016-03-23 4 views
0

私はアプリケーション用にFirebaseを使用しており、組み込みのリアルタイム機能はインスタントメッセージングに適しているようです。私はちょうどデータベースがどのように設定されるべきか私の頭の中で働くのに苦労している。理想的には、次のようなものです。インスタントメッセージングシステム用のFirebase/NoSQLスキーマ

messages: { 
    <messageId>: { 
    from: <userId>, 
    to: <userId>, 
    text: <String>, 
    dateSent: <Date> 
    dateRead: <Date> 
    } 
} 

メッセージを送信するには問題ありませんが、メッセージスレッドを読むことは難しくなります。現在のスレッドの送信者と受信者に一致するメッセージのメッセージのリスト(おそらく膨大なもの)を照会してから、dateSentでそれらを注文する必要があります。それがFirebaseの新しいクエリAPIで可能であれば、私はまだそれを行う方法を正確に把握していません。

答えて

0

メッセージの巨大なリストを照会すると、は決してとなります。高速実行のFirebase/NoSQLアプリケーションが必要な場合は、高速ルックアップを可能にするためにデータをモデル化する必要があります。

通常、チャットのシナリオでは、チャットルームをデータ構造にモデル化することを意味します。したがって、1つの長いメッセージリストを保存する代わりに、各チャット "ルーム"ごとにメッセージを個別に保存してください。

messages 
    <roomId> 
    <messageId1>: "..." 
    <messageId2>: "..." 
    <messageId3>: "..." 

質問なしでチャットメッセージにアクセスできるようになりました。ちょうどref.child(roomId).on(...です。

あなたが同じ2人のユーザーが同じ部屋に終わる確実に永続的なマッピングをしたい場合は、Best way to manage Chat channels in Firebase

+0

を見ているので、これは私は基本的にベースとしてFirebaseチャットの例を使用し、これに部屋を制限するべきであることを意味2人のユーザー間の議論?同じ2人のユーザー間で重複した「ルーム」が開かれないようにするにはどうすればよいですか? – delwin

+0

参照http://stackoverflow.com/questions/33540479/best-way-to-manage-chat-c​​hannels-in-firebase –

関連する問題