【发布时间】:2018-11-19 11:19:08
【问题描述】:
所以我正在尝试创建一个实时多人测验。我正在使用 Google Real-time Multiplayer API 和 firebase 实时数据库。
在游戏开始时,系统会提示用户问自己一个问题并提供两个答案,其中一个答案是正确的。然后将此信息发送到子“游戏”--“mRoomId”--“userId”下的Firebase实时数据库
变量 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 中的日志从数据库返回两个不同的问题,因为它循环遍历子项。
我怎样才能只得到一个相关的问题来呈现给玩游戏的用户?
我应该采用不同的结构,还是有办法只获取与我相关的值?
【问题讨论】:
-
请添加您现在使用的代码。
-
您在谈论哪个测验问题(我在您的数据库中看不到任何这样命名的节点),您如何向用户提出问题。请把事情弄清楚,这个问题现在太模棱两可了。
-
我已经用相关代码更新了我的问题
标签: java android firebase firebase-realtime-database