我试图从Non Member节点获取当前用户的姓名和电话,但是由于某些原因,我总是将name和phone的值设置为NULL。我调试并追溯了它,发现当前用户的DataSnapshot的值为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();
}
});
答案 0 :(得分:0)
您在数据库中“ NonMember”下拥有的密钥不是Firebase Auth用户ID。它们看起来像实时数据库推送ID,这意味着您可能已经在用户数据中添加了myRef.push().setValue(...)
之类的内容。但是,您的代码正在尝试使用用户ID来查找用户数据。您从Firebase身份验证获得的ID与数据库中的数据不匹配。如果您的查询不匹配任何数据,那么它将在快照中获得空值。
如果要存储每个用户的数据,请不要使用实时数据库推送操作-使用用户的ID,例如myRef.child(userKey).setValue(...)
。
答案 1 :(得分:0)
[("2018 Q4",63150), ("2019 Q1",50900), ("2019 Q2",77550), ("2019 Q3",79600), ("2019 Q4",92550)]
尝试