java - 如何从android的firebase数据库中的uid获取/检索多个数据?
问题描述
如何使用以下代码从 firebase 获取数据?
登录成功后出现空指针异常?
DatabaseReference mref = FirebaseDatabase.getInstance().getReference().child("/Users/Students")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid());
mref.addValueEventListener(new ValueEventListener() {
@SuppressLint("SetTextI18n")
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()){
email = ds.child("email").getValue().toString();
full_name = ds.child("full_name").getValue().toString();
roll_number = ds.child("roll_number").getValue().toString();
admission_id = ds.child("admission_id").getValue().toString();
phone_no = ds.child("phone_number").getValue().toString();
branch = ds.child("branch").getValue().toString();
year = ds.child("year").getValue().toString();
semester = ds.child("semester").getValue().toString();
section = ds.child("section").getValue().toString();
course = ds.child("course").getValue().toString();
batch = ds.child("batch").getValue().toString();
dob = ds.child("dob").getValue().toString();
address = ds.child("address").getValue().toString();
}
}
我的 Firebase 数据库是:
解决方案
删除以下内容:
for (DataSnapshot ds : dataSnapshot.getChildren()){
由于您已经可以访问 uid,因此您无需在直接子项中循环以获取值..
所以只需这样做:
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
email = dataSnapshot.child("email").getValue().toString();
full_name = dataSnapshot.child("full_name").getValue().toString();
roll_number = dataSnapshot.child("roll_number").getValue().toString();
admission_id = dataSnapshot.child("admission_id").getValue().toString();
phone_no = dataSnapshot.child("phone_number").getValue().toString();
branch = dataSnapshot.child("branch").getValue().toString();
year = dataSnapshot.child("year").getValue().toString();
semester = dataSnapshot.child("semester").getValue().toString();
section = dataSnapshot.child("section").getValue().toString();
course = dataSnapshot.child("course").getValue().toString();
batch = dataSnapshot.child("batch").getValue().toString();
dob = dataSnapshot.child("dob").getValue().toString();
address = dataSnapshot.child("address").getValue().toString();
推荐阅读
- docker - 在 Kubernetes 上拉取 dockerhub 镜像失败
- python - 如何为动态添加的属性定义 setter、getter
- javascript - $.scrollTo(this.hash || 0, 1500); ? 数字的含义是什么?
- apache-spark - 在 Spark 中使用“dropDuplicates”函数后获取删除记录的最佳方法
- mocking - 没有将结果作为 PHPUnit 对象模拟的数组
- mysql - 如何从所有数据都匹配且仅匹配的链接表中获取数据?
- java - 无法在 Java 项目中导入 com.auth0.jwt
- ansible - 在 Ansible 中基于扩展运行不同的脚本
- sql - Microsoft Access 查询输入条件
- sql - 如何在 PGSQL 中使用多个条件更新多个表列