Firestore пользовательский идентификатор документа с настройкой данных не работает - CollectionReference - PullRequest
0 голосов
/ 01 октября 2018

В моем облаке firestore я хочу хранить свои пользовательские данные.Таким образом, ID документа должен быть идентификатором пользователя от auth.Когда я устанавливаю идентификатор документа вручную, я не могу настроить данные.Вот мой код:

currentuser = FirebaseAuth.getInstance().getCurrentUser().getUid();

mFirestore = FirebaseFirestore.getInstance();

CollectionReference mFirestoreProfiles = mFirestore.collection("profiles").document(currentuser).set();

     Profile profile = new Profile(
          email,
          birth
     );

mFirestoreProfiles.add(profile)
     .addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
          @Override
          public void onSuccess(DocumentReference documentReference) {
               Snackbar snackbar = Snackbar
               .make((getWindow().getDecorView().getRootView()), "Registration successful.", Snackbar.LENGTH_LONG);
               snackbar.show();
               }
          })
      .addOnFailureListener(new OnFailureListener() {
          @Override
          public void onFailure(@NonNull Exception e) {
               Snackbar snackbar = Snackbar
               .make((getWindow().getDecorView().getRootView()), e.getMessage(), Snackbar.LENGTH_LONG);
               snackbar.show();
               }
          });

Я всегда получаю сообщение об ошибке «CollectionReference» в этой строке:

mFirestore.collection("profiles").document(currentuser).set();

Было бы очень хорошо, если бы кто-то нашел время, чтобы помочь мне сэто (действительно глупая) проблема.

С уважением, Джере

1 Ответ

0 голосов
/ 01 октября 2018

Следующая строка кода:

CollectionReference mFirestoreProfiles = mFirestore.collection("profiles").document(currentuser).set();

Всегда будет выдавать исключение.Чтобы решить эту проблему, измените приведенную выше строку кода на:

DocumentReference mFirestoreProfiles = mFirestore.collection("profiles").document(currentuser);
Profile profile = new Profile(email, birth);
mFirestoreProfiles.set(profile).addOnSuccessListener(new OnSuccessListener<Void>() {
    @Override
    public void onSuccess(Void aVoid) {
        Toast.makeText(getApplicationContext(), "Document written successfully!", Toast.LENGTH_SHORT).show();
    }
});

Даже если вы передаете методу set() объект profile, исключение также будет вызвано, потому что метод set()тип возвращаемого значения Task, а не CollectionReference.

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