首页 > 解决方案 > 我无法将数据写入 Firebase Firestore

问题描述

关于为什么会发生的任何建议。

我以下面提到的方式使用过:

FirebaseFirestore dbFirestore;
dbFirestore  = FirebaseFirestore.getInstance();

在上传时,我以这种方式使用它:

documentReference= dbFirestore.collection("CLIENT_DETAIL").document(mAuth.getUid());
documentReference.set(userData);

我无法在 Firestore 上写它,我尝试了许多不同的可能性。

但是,有时它会在我尝试登录时写入,但在注册时执行代码时不会写入。当它写入时,即使在使用所有字段键调用后,我也无法读取它。

有什么建议么??比如我为什么会发生,或者我是否需要在 GCP 有一个结算帐户。请,任何人。这是我试图弄清楚的一天。

 mDocumentReferance.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
        @Override
        public void onSuccess(DocumentSnapshot documentSnapshot) {
            storeType= documentSnapshot.getString("STORE_TYPE");
        }
    }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Log.i(TAG, "onFailure: unable to fetch the document");
        }
    });

它是阅读它的代码,但它不起作用

这是 Task.isSuccessfull 上的代码

 if (task.isSuccessful()) {

                Log.i(TAG, "onComplete: creating folders based type ");
                OnAuth(task.getResult().getUser());
                sendEmailVerification();
                mAuth.signOut();
                SharedPreferences storeNamePreference= getSharedPreferences("UserDetails",MODE_PRIVATE);
                userData.put(RESTAURANT_UID,storeNamePreference.getString("UserUID",""));
                dbFirestore.collection("CLIENT_DETAIL").document(storeNamePreference.getString("UserUID","")).set(userData).addOnSuccessListener(new OnSuccessListener<Void>() {
                    @Override
                    public void onSuccess(Void aVoid) {
                        Log.i(TAG, "onSuccess: Database referance is created");

                        mDialog.dismiss();
                    }
                }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Log.i(TAG, "onFailure: database referance is not created");
                    }
                });
                Intent intent = new Intent(SignupActivity.this, LoginActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
            }

由于我已经在 SharedPreferences 中保存了用户 UID 值,因此我在那里调用它。我在上面的代码中做错了吗?

在此处输入图像描述

在此处输入图像描述

我确实有用户 UID 的值。

标签: javaandroidfirebasegoogle-cloud-firestore

解决方案


您无法向 Firestore 发送数据,因为您向 Firestore 发送了虚假数据。您什么都不发送,只发送UserUID没有信息的字段:

userData.put(RESTAURANT_UID,storeNamePreference.getString("UserUID",""));

UserUID- 是您发送到 dB 的字段。然后你写了“” - 这是错误的,因为你发送的是空信息,你必须给出变量。


推荐阅读