相关疑难解决方法(0)

检查Firestore中是否存在用户

我想在Cloud Firestore中创建一个用户数据库,其中电子邮件是每个用户的唯一ID.用户应该在a中collection,每个用户都是a 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();

                                }
                            });
Run Code Online (Sandbox Code Playgroud)

数据库为空,如您所见:

在此输入图像描述

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

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

android firebase google-cloud-firestore

1
推荐指数
1
解决办法
4969
查看次数

Firestore - 为什么检查DocumentSnapshot是否为空并且调用是否存在?

Firestore文档中查看此代码示例:

DocumentReference docRef = db.collection("cities").document("SF");
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
    @Override
    public void onComplete(@NonNull Task<DocumentSnapshot> task) {
        if (task.isSuccessful()) {
            DocumentSnapshot document = task.getResult();
            if (document != null && document.exists()) {
                Log.d(TAG, "DocumentSnapshot data: " + document.getData());
            } else {
                Log.d(TAG, "No such document");
            }
        } else {
           Log.d(TAG, "get failed with ", task.getException());
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

https://firebase.google.com/docs/firestore/query-data/get-data

为什么检查一下document != null?如果我正确读取源代码(初学者),该exists方法将在内部检查无效.

java android firebase google-cloud-firestore

1
推荐指数
1
解决办法
4052
查看次数

标签 统计

android ×2

firebase ×2

google-cloud-firestore ×2

java ×1