如何在 kotlin 中获取实时数据库的子项?
How to get the children of a realtime database in kotlin?
This the Realtime Database
这里我想在 Kotlin 中以字符串形式检索用户是招聘人员还是学生。
在事先不知道用户类型的情况下,您无法创建查询来获取特定用户(招聘人员或学生)。如果您需要从数据库中获取所有招聘人员或所有学生,那么您应该考虑使用允许这样做的数据库模式。所以请检查以下方法:
Firebase-root
|
--- users
|
--- w73...C32
| |
| --- password: "123456"
| |
| --- email: "test2@gmail.com"
| |
| --- type: "recruiter"
|
--- aG4...383
|
--- password: "123456"
|
--- email: "test@gmail.com"
|
--- type: "student"
如果想获取例如users
节点的所有招聘人员,请使用以下代码行:
DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = db.child("users");
Query queryRecruiters = usersRef.orderByChild("type").equalTo("recruiter");
queryRecruiters.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
for (DataSnapshot ds : task.getResult().getChildren()) {
String email = ds.child("email").getValue(String.class);
Log.d("TAG", email);
}
} else {
Log.d("TAG", task.getException().getMessage()); //Never ignore potential errors!
}
}
});
logcat 中的结果将是:
test2@gmail.com
另一方面,如果您知道电子邮件地址并且想检查用户的类型(recruiter/student),那么请使用以下代码行:
Query queryByEmail = usersRef.orderByChild("email").equalTo("test2@gmail.com");
queryByEmail.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
for (DataSnapshot ds : task.getResult().getChildren()) {
String type = ds.child("type").getValue(String.class);
Log.d("TAG", type);
}
} else {
Log.d("TAG", task.getException().getMessage()); //Never ignore potential errors!
}
}
});
logcat 中的结果将是:
recruiter
请注意,我已经添加了所有节点名称和字段camel case。
This the Realtime Database
这里我想在 Kotlin 中以字符串形式检索用户是招聘人员还是学生。
在事先不知道用户类型的情况下,您无法创建查询来获取特定用户(招聘人员或学生)。如果您需要从数据库中获取所有招聘人员或所有学生,那么您应该考虑使用允许这样做的数据库模式。所以请检查以下方法:
Firebase-root
|
--- users
|
--- w73...C32
| |
| --- password: "123456"
| |
| --- email: "test2@gmail.com"
| |
| --- type: "recruiter"
|
--- aG4...383
|
--- password: "123456"
|
--- email: "test@gmail.com"
|
--- type: "student"
如果想获取例如users
节点的所有招聘人员,请使用以下代码行:
DatabaseReference db = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = db.child("users");
Query queryRecruiters = usersRef.orderByChild("type").equalTo("recruiter");
queryRecruiters.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
for (DataSnapshot ds : task.getResult().getChildren()) {
String email = ds.child("email").getValue(String.class);
Log.d("TAG", email);
}
} else {
Log.d("TAG", task.getException().getMessage()); //Never ignore potential errors!
}
}
});
logcat 中的结果将是:
test2@gmail.com
另一方面,如果您知道电子邮件地址并且想检查用户的类型(recruiter/student),那么请使用以下代码行:
Query queryByEmail = usersRef.orderByChild("email").equalTo("test2@gmail.com");
queryByEmail.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
for (DataSnapshot ds : task.getResult().getChildren()) {
String type = ds.child("type").getValue(String.class);
Log.d("TAG", type);
}
} else {
Log.d("TAG", task.getException().getMessage()); //Never ignore potential errors!
}
}
});
logcat 中的结果将是:
recruiter
请注意,我已经添加了所有节点名称和字段camel case。