[英]Realtime database using firebase - retrieving a specific information
因此,我試圖創建一個實時的多人游戲測驗。 我正在將Google Real-time Multiplayer API與Firebase實時數據庫一起使用。
在游戲開始時,系統會提示用戶問一個問題,並提供兩個答案,其中一個答案是正確的。 然后將此信息發送到Firebase實時數據庫中的子“游戲”-“ mRoomId” ---“ userId”下
變量uniqueRoomID是他們的玩家正在從Google API檢索的房間的特定ID。
DatabaseReference myRef = database.getReference("Games").child(mRoomId).child(userId);
我使用setValue函數將4個值發送到該特定參考。
Upload upload = new Upload(question,answer1,answer2, userId);
myRef.setValue(upload);
我的數據庫樹如下
我的問題是:
當我稍后在游戲中向其他用戶提出問題時,我不想顯示自己的問題,只有其他用戶的問題才有意義。
這是我的valueEventListener:
myReference = FirebaseDatabase.getInstance().getReference().child("Games").child(mRoomId);
myReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
showData(dataSnapshot);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
這是showData()方法;
private void showData (DataSnapshot dataSnapshot){
for(DataSnapshot ds : dataSnapshot.getChildren()){
Upload upload = ds.getValue(Upload.class);
Log.d("TAG", "question1 is " + upload.getQuestion1() );
}
}
showData中的日志從數據庫返回兩個不同的問題,因為它遍歷子級。
我如何只獲得與玩游戲的用戶相關的一個問題?
我應該以不同的方式構造它,還是有辦法僅獲取與我相關的值?
無法從查詢中排除特定的子節點。 這意味着(據我所知)您有兩個基本選項:
DataSnapshot.getKey()
與User.getUid()
具有相同的值來刪除自己的節點客戶端。 DatabaseReference theirRef = database.getReference("Games").child(mRoomId).child(otherPlayerUid);
加載該玩家的數據DatabaseReference theirRef = database.getReference("Games").child(mRoomId).child(otherPlayerUid);
另請參閱:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.