Я не могу записать данные в Firebase Firestore - PullRequest
2 голосов
/ 26 января 2020

Любые предложения о том, почему это происходит.

Я использовал описанный ниже способ:

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);
            }

Так как я уже сохранил значение UID пользователя в SharedPreferances, я позвонил туда. Я сделал что-то не так в приведенном выше коде?

enter image description here

enter image description here

У меня есть значение UID пользователя.

Ответы [ 3 ]

1 голос
/ 27 января 2020

Вы не можете отправить данные в Firestore, потому что вы отправляете в firestore ложные данные. Вы ничего не отправляете, только поле UserUID без информации:

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

UserUID - это поле, которое вы отправляете в дБ. Затем вы написали «» - это неверно, потому что вы отправляете пустую информацию, вам нужно дать переменную.

0 голосов
/ 28 января 2020

Если вы хотите установить UserUID в качестве документа в Firestore, напишите:

FirebaseUser currentUser = FirebaseAuth.getInstance (). GetCurrentUser ();

-Эта переменная currentUser - это идентификатор авторизованного пользователя, его идентификатор в вашем приложении.

Затем напишите:
dbFirestore.collection ("CLIENT_LIST"). Document (currentUser.getUid ()) .set (userData) .addOnSuccessListener (новый OnSuccessListener) .......

- здесь вы отправляете идентификатор пользователя как документ Firestore.

* он работает только тогда, когда вы создали метод mAuth.createUserWithEmailAndPassword, так как ваш пользователь будет иметь свой уникальный идентификатор.

0 голосов
/ 26 января 2020

После непрерывного кодирования я обнаружил, что во время регистрации невозможно вызвать метод внутри "task.isSuccessfully". Что я сделал, так это то, что для того, чтобы получить UserID вне метода «mAuth.createUserWithEmailAndPassword ()», я инициализировал FirebaseUser и вызвал текущего пользователя, и я смог получить UserID. Но Firebase занимает около 2-3 секунд для загрузки UserID, поэтому я добавил ProgressBar, который в конечном итоге определяет время загрузки, и мне удалось успешно вызвать ссылку UserID в DocumentReference.

Что решило мою проблему.

Тем не менее, я могу получить USERID только при отладке, если я запускаю ссылку «Я получаю нулевую ссылку».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...