Firebase Android getKey()返回child

时间:2018-03-14 08:35:30

标签: android firebase firebase-realtime-database

我正在尝试使用中间的密钥检索“故障单”下方的子项,但无法执行此操作。方法getKey()返回“ticket”而不是键。

pre-commit

}

and the database structure

2 个答案:

答案 0 :(得分:0)

如果您只想获取PassengerViewModel类的对象,则无需使用child()方法。只需删除此调用:.child(ref.getKey()),您的代码就可以正常运行。

如果要将该按键传递给child()方法,则需要先将其存储到变量中。为此,请使用以下代码:

String key = ref.push().getKey();

获得此密钥后,您可以在任何参考中使用它。

答案 1 :(得分:0)

首先谢谢@AlexMamo ....

这是正确的方法......

private void getSpecificTicketFromFirebase() {
DatabaseReference ref =
    FirebaseDatabase.getInstance().getReference().child("user").child(firebaseManager.getFireBaseUser().getUid()).child("ticket");

ref.addValueEventListener(new ValueEventListener() {
  @Override public void onDataChange(DataSnapshot dataSnapshot) {
    for (DataSnapshot data : dataSnapshot.getChildren()) {
      Timber.d("Key %s",data.getKey());
    }
  }

  @Override public void onCancelled(DatabaseError databaseError) {
    Timber.e(databaseError.toException());
  }
});