【问题标题】:Check if user exists in Firestore检查用户是否存在于 Firestore
【发布时间】:2018-03-16 09:49:06
【问题描述】:

我想在 Cloud Firestore 中创建一个用户数据库,并将电子邮件作为每个用户的唯一 ID。用户应该是collection,每个用户都是document。

这是我检查用户是否存在于登录活动中的方式:

FirebaseFirestore db = FirebaseFirestore.getInstance();
                            final DocumentReference userRef = db.collection("users").document(email);
                            userRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
                                @Override
                                public void onComplete(@NonNull Task<DocumentSnapshot> task) {
                                    if (task.isSuccessful()) {
                                        DocumentSnapshot document = task.getResult();

                                        Toast.makeText(LoginActivity.this, task.getResult().toString(),
                                                Toast.LENGTH_SHORT).show();

                                        if (document != null) {
                                            //The user exists...
                                        }


                                        else {
                                            //The user doesn't exist...
                                           }

                                        }
                                    }
                                    else
                                        connectionErrorActivity();

                                }
                            });

数据库是空的,如你所见:

我的问题是,document 永远不会为空,即使数据库是空的也是如此。toast 表明document 的字符串值为:COM.GOOGLE.FIREBASE.FIRESTORE.DOCUMENTSNAPSHOT@8ED6B96。 p>

这是正确的方法吗?我能做些什么来修复它?

【问题讨论】:

    标签: android firebase google-cloud-firestore


    【解决方案1】:

    任务结果有一个名为 AdditionalUserInfo 的字段,你可以在这里找到 isNewUser。如果用户已经存在,它将返回 false。

      if (task.result?.additionalUserInfo!!.isNewUser){
             addNewUser()
        } else {
             updateUser()
      }
    

    【讨论】:

      【解决方案2】:

      Task 的结果是DocumentSnapshot。通过exists 方法可以获得底层文档是否实际存在。

      如果文档确实存在,您可以致电getData 以获取其中的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-21
        相关资源
        最近更新 更多