我正在使用Firebase Real time数据库进行第一个项目。我正在关注有关如何实例化和写入数据库的Firebase文档(这里没有问题)。但是,当我想从Firebase数据库读取数据时,会得到对数据库的空引用。我正在尝试更改路径,添加根元素,更改为子元素。什么都没有。我可以写。我对数据库的权限已设置为测试。
这是数据库:
user-registration-app-f3fa2
users
jjohnson
email:"[email protected]"
fullName: "James Johnson"
username: "jjohnson"
这是我从数据库中读取的位置:
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference mDatabase = database.getReference("users");
// Read from the database
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String value = dataSnapshot.child("jvazquez").getValue(String.class);
Log.d(TAG, "Value is: " + value);
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
Log.w(TAG, "Failed to read value.", error.toException());
}
});
例如,要获取fullName
属性的值,请使用以下代码行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference fullNameRef = rootRef.child("users").child("jjohnson").child("fullName");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String fullName = dataSnapshot.getValue(String.class);
Log.d(TAG, fullName);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}
};
fullNameRef.addListenerForSingleValueEvent(valueEventListener);
logcat中的输出将是:
James Johnson
尝试使用
DatabaseReference mDatabase = database.getReference();
然后尝试
mDatabase = mDatabase.child("users");