繁体   English   中英

如何从 firebase 数据快照中获取数据?

[英]How to fetch data from firebase datasnapshot?

我对 firebase 数据库几乎没有经验。 以下代码不起作用,因为它不会从数据库中检索用户名。 但是,它显示了来自datasnapshot的数据快照。 这是代码。

databaseReference = FirebaseDatabase.getInstance().getReference().child("/userList/"+ FirebaseAuth.getInstance().getUid());
databaseReference.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
        Log.d(TAG, "onChildAdded: " + dataSnapshot.toString());
        for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()){
            Users users = dataSnapshot1.getValue(Users.class);
            String firstName = users.getFirstName();
            String lastName = users.getLastName();
            Log.d(TAG, "onChildAdded: " + firstName + " " + lastName);
        }
    }
}

datasnapshot的数据快照

onChildAdded: DataSnapshot { 
    key = -Lt_5ltPuMx6CPSk5X8-, 
    value = {
      firstName=firstname, 
      lastName=lastname, 
      email=firstname@gmail.com
    } 
}

这是我存储 firebase 数据的方式。

火力基地数据

/userList/$uid下的每个孩子调用onChildAdded回调。 每次调用它时,快照都会包含一个子节点。 在回调中,您正在遍历该快照的子项,这意味着您的dataSnapshot1引用了各个属性( emailfirstNamelastName )。 由于这些不是完整的用户节点,因此dataSnapshot1.getValue(Users.class)无法从中读取用户。

简而言之:删除循环,您应该会得到更好的结果:

databaseReference = FirebaseDatabase.getInstance().getReference().child("/userList/"+ FirebaseAuth.getInstance().getUid());
databaseReference.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
        Log.d(TAG, "onChildAdded: " + dataSnapshot.toString());
        Users users = dataSnapshot.getValue(Users.class);
        String firstName = users.getFirstName();
        String lastName = users.getLastName();
        Log.d(TAG, "onChildAdded: " + firstName + " " + lastName);
    }
}

另请参阅这些类似的问题:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM