【问题标题】:When querying the database has the object but getValue() will return null查询数据库有对象但getValue()会返回null
【发布时间】:2019-01-17 15:17:43
【问题描述】:

我将每个唯一值的用户保存到实时火力库中,以在此链接图像上显示:

get user according to email - database firebase

我想通过电子邮件获取用户,所以我尝试这样做:

 private void getUserFromRealtimeFirebase(String email) {
    mFirebaseDatabase = FirebaseDatabase.getInstance();
    mDatabaseReference = mFirebaseDatabase.getReference().child("user");
    Query query = mDatabaseReference.orderByChild("email").equalTo(email);

    query.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            Log.i("TAG", "dataSnapshot value = " + dataSnapshot.getValue().toString());

            if (dataSnapshot.exists()) {
                Log.d("Tag", "user exists"); 
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

但我总是遇到回调侦听器:dataSnapshot: key = user , value = null 即使电子邮件存在。

不知道怎么了?

【问题讨论】:

    标签: firebase firebase-realtime-database


    【解决方案1】:

    编辑:

    如果您不想传递 userId,请使用此查询:

    mDatabaseReference = mFirebaseDatabase.getReference();
    Query query = mDatabaseReference.orderByChild("user/email").equalTo(email);
    

    您缺少用户 ID 级别。 您应该将代码更改为:

    private void getUserFromRealtimeFirebase(String email, String userId) {
        mFirebaseDatabase = FirebaseDatabase.getInstance();
        mDatabaseReference = mFirebaseDatabase.getReference().chlid(userId).child("user");
        Query query = mDatabaseReference.orderByChild("email").equalTo(email);
    ...
    ...
    }
    

    顺便说一句,我会考虑将数据结构重新排列为 - newsapp -> users -> {userId} -> {name, image, firebase-token, email....}。

    此外,在回调中 - 首先检查 dataSnapshot.exists() 是否,然后才使用 getValue(),即使在日志中,也可以避免空指针异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多