在我的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();
如果有人愿意花时间帮助我解决这个(真正愚蠢的)问题,那就太好了。
问候 杰里
答案 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}}。