gpt4 book ai didi

java - 当前用户的DataSnapshot值为NULL

转载 作者:行者123 更新时间:2023-12-01 16:20:52 25 4
gpt4 key购买 nike

我试图从非成员节点获取当前用户的姓名和电话。但由于某种原因,我总是将姓名和电话的值设置为 NULL。我调试回溯发现当前用户的DataSnapshot的Value为NULL。

代码:

 FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("NonMember");
final FirebaseUser Key = firebaseAuth.getCurrentUser();
final String userKey = Key.getUid();

if(firebaseAuth.getCurrentUser() == null){
finish();

startActivity(new Intent(getApplicationContext(), MEMBERMAINActivity.class));
}

myRef.child(userKey).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot){
for (DataSnapshot ds: dataSnapshot.getChildren()){
String name = dataSnapshot.child("name").getValue().toString();
Log.d("TAG", "Name"+ name);
// profile_name.setText(name);
}}


@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(MyProfile.this, databaseError.getCode(), Toast.LENGTH_SHORT).show();

}
});

enter image description here

最佳答案

数据库中“NonMember”下的 key 不是 Firebase Auth 用户 ID。它们看起来像实时数据库推送 ID,这意味着您可能已经使用 myRef.push().setValue(...) 之类的内容添加了用户数据。但是,您的代码正在尝试使用用户 ID 来查找用户数据。您从 Firebase Auth 获取的 ID 与数据库中的数据不匹配。如果您的查询与任何数据都不匹配,那么它将在快照中获得空值。

如果您想存储每个用户的数据,请不要使用实时数据库推送操作 - 使用用户的 ID,例如 myRef.child(userKey).setValue(...).

关于java - 当前用户的DataSnapshot值为NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62286410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com