检查Firestore中是否存在用户

问题描述 投票:1回答:2

我想在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();

                                }
                            });

数据库为空,如您所见:

enter image description here

我的问题是,document永远不会为空,即使数据库是空的也很难。 toast显示document的字符串值为:COM.GOOGLE.FIREBASE.FIRESTORE.DOCUMENTSNAPSHOT@8ED6B96

这是正确的方法吗?我该怎么办才能修复它?

android firebase google-cloud-firestore
2个回答
6
投票

这个Task的结果是DocumentSnapshot。是否可以通过exists方法获得基础文档是否实际存在。

如果文档存在,您可以调用getData来获取它的内容。


0
投票

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

  if (task.result?.additionalUserInfo!!.isNewUser){
         addNewUser()
    } else {
         updateUser()
  }
© www.soinside.com 2019 - 2024. All rights reserved.