私はJavaでfirebaseを使用しており、チャットを開始したユーザーのリストを持つ "Chatmessages"という名前のデータベース内に子があります。このリストには、それらのユーザーのUIDが含まれています。また、私のデータベースには、すべてのユーザーの情報を含む「ユーザー」の子もあります。どのように "Chatmessages"をUIDのリストと共に使用するのですが、 "Users"からの対応するUIDの情報を取得します。Firebase:UIDの子にアクセス
0
A
答えて
2
データベース構造によれば、これを達成するにはデータベースを2回クエリする必要があります。両方のノードが、Chatmessages
とUsers
があなたのFirebaseルートの直接のチャイルズがあると仮定すると、次のコードを使用してください:このコードを使用して
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference chatIdRef = rootRef.child("Chatmessages").child(chatId);
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String uid = ds.getKey();
DatabaseReference usersRef = rootRef.child("Users").child(uid);
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String image = dataSnapshot.child("image").getValue(String.class);
String name = dataSnapshot.child("name").getValue(String.class);
Boolean onlineStatus = dataSnapshot.child("onlineStatus").getValue(Boolean.class);
String status = dataSnapshot.child("nstatusame").getValue(String.class);
Log.d("TAG", image + "/" + name + "/" + onlineStatus + "/" + status);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
usersRef.addListenerForSingleValueEvent(eventListener);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
chatIdRef.addListenerForSingleValueEvent(eventListener);
を、あなただけの特定のチャットからユーザーのデータを取得します。私が最初にDatabaseReference
という変数を使用したことを確認してください。実際には特定のチャットのIDであるという名前です。たとえば、あなたのスクリーンショットでは5kAiGg7zuです...
0
私が正しくあなたの質問を理解していれば、あなたは、特定のユーザーのチャットメッセージを取得したいです。これを行うには、特定のユーザーのuidにアクセスする必要があります。それを保存する1つの方法は、ユーザーがサインインまたはサインアップしてキーを取得し、SharedPreferencesに保存するときです。
キーを取得したら、firebaseクエリを実行してこのユーザーのチャットメッセージを取得できます。あなたはあなたが使用しようとしているfirebaseリスナーの3つのオプションがあります。すべてのデータのデータスナップショットを提供するValueEventListener、その時点で1つの子を返すChildEventListener、すべてのデータのデータスナップショットを一度だけ与えるSingleValueEvenetListenerなどがあります。
Query queryChatMessages = mDatabase.child("Chatmessages").child(uid);
queryChatMessages.addChildEventListener("your listener");
関連する問題
- 1. Firebase:UIDからDisplayNameを取得
- 2. アクセスの子プロパティ
- 3. メインビューモデルの子VMにアクセス
- 4. SimpleButtonの子にアクセスする
- 5. 子マスターページのユーザーコントロールへのアクセス先子マスターページコード
- 6. アクセス修飾子
- 7. アクセス修飾子
- 8. JSONアクセス子供
- 9. アクセス子供
- 10. アクセス子ノードが
- 11. VisualStateアニメーションのContentPresenterの子にアクセスする
- 12. Javaの親クラスの子定数にアクセス
- 13. 子クラスのプライベートプロパティへのアクセス
- 14. 子供のアクセスの親コンポーネント
- 15. Handlebars.jsを使用してJSON内の子の子にアクセスする
- 16. Android Gridlayoutの子TextViewsにアクセスする
- 17. 子クラスの親クラスにアクセスする
- 18. Nokogiri要素の子にアクセスする
- 19. Angular2で子コンポーネントのプロバイダにアクセスする
- 20. Delphiの子単位からメインフォームにアクセス
- 21. ファンシーボックス内の親から子ウィンドウメソッドにアクセス
- 22. リサイクラービューの子にアクセスする方法は?
- 23. firebase - データベースの子にアクセスする
- 24. UIWebViewの子ウィンドウコンテキストにアクセスする方法
- 25. firebaseルールの電子メールアドレスにアクセスする
- 26. riotjsの名前で子タグにアクセス
- 27. json.netの子値にアクセスする方法
- 28. 親の変数にアクセスする子
- 29. アクセス子供値WPF
- 30. VBA - アクセス電子メール
ありがとう!私は同じことをやるが、ユーザーのリストをロードする方法を知っていますか? – nothing
同じようにする必要があります。リスナーを追加し、ユーザーのみを照会します。 –
doesntの仕事 ) – nothing