具有设置数据的Firestore自定义文档ID不起作用-CollectionReference

时间:2018-10-01 18:15:42

标签: java android google-cloud-firestore

在我的Firestore云中,我想存储我的用户数据。因此,文档ID应该是auth中的用户ID。手动设置文档ID时,无法设置数据。 那是我的代码:

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 :(得分:1)

下面的代码行:

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而不是{ {1}}。