【问题标题】:Firebase Cloud Firestore referrence returning nullFirebase Cloud Firestore 引用返回 null
【发布时间】:2019-07-07 23:45:30
【问题描述】:

所以,我在 firestore 中创建了 firebase 用户配置文件,它将保存用户数据,例如他们的姓名、电子邮件、电话号码和他们的奖励积分。用户使用 Google Sign-in 登录。

这就是我将数据写入 Firestore 的方式。

 private void addNewUser() {
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    if (user != null) {
        String uid = user.getUid();
        for (UserInfo profile : user.getProviderData()) {
            // Id of the provider (ex: google.com)
            String providerId = profile.getProviderId();

            // UID specific to the provider

            // Name, email address, and profile photo Url
            String name = profile.getDisplayName();
            String email = profile.getEmail();


            Map<String, Object> newUser = new HashMap<>();
            newUser.put("Nama", name);
            newUser.put("Email", email);




            // Add a new document with a generated ID
            db.collection("users").document(uid).set(newUser);
                        }


        }


    }

而且那个有效。

但是当我尝试使用Document Reference检索数据时

    @Override
public void onStart() {
    super.onStart();
    // Check if user is signed in (non-null) and update UI accordingly.
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    if (user != null) {
        String curUser = user.getUid();
        DocumentReference documentReference = db.document(curUser);
        documentReference.addSnapshotListener(this.getActivity(), new EventListener<DocumentSnapshot>() {
            @Override
            public void onEvent(@javax.annotation.Nullable DocumentSnapshot documentSnapshot, @javax.annotation.Nullable FirebaseFirestoreException e) {
                if (documentSnapshot.exists()) {
                    String userNama = documentSnapshot.getString(KEY_NAMA);
                    String userEmail = documentSnapshot.getString(KEY_EMAIL);

                    namaUser.setText(userNama);
                    emailUser.setText(userEmail);
                }
            }
        });




    } else {

        Intent intent = new Intent(Home.this.getActivity(), LoginActivity.class);
        startActivity(intent);


        }

    }

在这种情况下,文档引用 curUser,返回 null。我不知道我做错了什么。

【问题讨论】:

    标签: java android firebase google-cloud-firestore


    【解决方案1】:

    您需要在DocumentReference 中包含集合名称(users

    改变,

    DocumentReference documentReference = db.document(curUser);
    

    到,

    DocumentReference documentReference = db.collection("users").document(curUser);
    

    【讨论】:

      猜你喜欢
      • 2021-08-15
      • 1970-01-01
      • 1970-01-01
      • 2020-05-20
      • 1970-01-01
      • 2019-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多