检索数据:
在您的数据库中,您使用的是使用 生成的随机 id push()
,因此如果您想检索数据,请执行以下操作:
在 Android 应用中使用 Firebase:
DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("users");
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot datas : dataSnapshot.getChildren()) {
String name=datas.child("name").getValue().toString();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
在 Javascript 中使用 Firebase:
firebase.database().ref().child("users").on('value', function (snapshot) {
snapshot.forEach(function(childSnapshot) {
var name=childSnapshot.val().name;
});
});
在这里,您有快照(数据的位置),users
然后您在所有随机 ID 中循环并检索名称。
检索特定用户的数据:
现在,如果您只想检索特定用户的信息,那么您需要添加一个查询:
在 Android 应用中使用 Firebase:
DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("users");
Query queries=ref.orderByChild("name").equalTo("Alex");
queries.addListenerForSingleValueEvent(new ValueEventListener() {...}
将 Firebase 与 Javascript 结合使用
firebase.database().ref().child("users").orderByChild("name").equalTo("Alex").on('value', function (snapshot) {
snapshot.forEach(function(childSnapshot) {
var name=childSnapshot.val().name;
});
});
使用orderByChild("name").equalTo("Alex")
就像说它where name="Alex"
会检索与 Alex 相关的数据。
最好的办法:
最好的办法是使用 Firebase 身份验证,从而为每个用户生成一个唯一 id 并使用它而不是随机 id push()
,这样您就不必遍历所有用户,因为您拥有该 id 并且可以轻松访问它。
首先,用户需要登录,然后您可以检索唯一 id 并附加一个侦听器以检索该用户的其他数据:
在 Android 上使用 Firebase:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("users");
String uid = FirebaseAuthentication.getInstance().getCurrentUser().getUid();
ref.child(uid).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name=dataSnapshot.child("name").getValue().toString();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
将 Firebase 与 Javascript 一起使用:
var user = firebase.auth().currentUser;
var uid=user.uid;
firebase.database().ref().child("users").child(uid).on('value', function (snapshot) {
var name=snapshot.val().name;
});