Android Studio Firebase“没有这样的实例字段”错误

问题描述:

我正在为我的Android应用使用Firebase。在下面的代码,Android Studio Firebase“没有这样的实例字段”错误

DatabaseReference rootReference = FirebaseDatabase.getInstance().getReference(); 
matchReference = rootReference.child("tournaments"); 
userReference = rootReference.child("Users").child(deviceID); 

    userReference.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      for(DataSnapshot snapshot : dataSnapshot.getChildren()) { 

       if(snapshot.child(matchList.get(position).getId()).exists()) { 

        //If the user has Starred this game 

        isStarred = true; 

       } else { isStarred = false; } 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

我得到的userReference领域"No Such instance field"错误。当我调试它时,它给了我正确的数据库路径,但它不会进入addValueEventListener函数。

我的数据库看起来像

enter image description here

,并呼吁 “starredGames” 另一个孩子将在我的代码被添加。

为什么它给了我错误?

+0

是您'userReference'应该是你的'matchReference'的孩子,而不是'rootReference'?你能否更详细地展示你的Firebase结构? – timothyclifford

让你deviceID价值的正确方法是:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference deviceIDRef = rootRef.child("Users").child("6610609cfc2c7945"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     String deviceID = dataSnapshot.child("deviceID").getValue(String.class); 
     Log.d("TAG", deviceID); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
deviceIDRef.addListenerForSingleValueEvent(eventListener);