Java 具有设置数据的Firestore自定义文档ID无效-CollectionReference
在我的firestore云中,我想存储我的用户数据。因此,文档ID应该是来自auth的用户ID。手动设置文档ID时,无法设置数据。 这是我的密码:Java 具有设置数据的Firestore自定义文档ID无效-CollectionReference,java,android,google-cloud-firestore,Java,Android,Google Cloud Firestore,在我的firestore云中,我想存储我的用户数据。因此,文档ID应该是来自auth的用户ID。手动设置文档ID时,无法设置数据。 这是我的密码: currentuser = FirebaseAuth.getInstance().getCurrentUser().getUid(); mFirestore = FirebaseFirestore.getInstance(); CollectionReference mFirestoreProfiles = mFirestore.collecti
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();
}
});
如果有人能抽出时间来帮我解决这个(真正愚蠢的)问题,那就太好了
问候
Jere以下代码行:
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();
}
});
DocumentReference mFirestoreProfiles=mFirestore.collection(“profiles”).document(currentuser);
个人资料=新个人资料(电子邮件、出生);
mFirestoreProfiles.set(profile.addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时公开作废(作废避免){
Toast.makeText(getApplicationContext(),“文档编写成功!”,Toast.LENGTH\u SHORT.show();
}
});
即使将
profile
对象传递给set()
方法,也会引发异常,因为set()
方法返回类型是一个Task
而不是CollectionReference谢谢您的回答,但这不起作用。。。第一行代码导致此错误:类型不兼容。必需:com.google.firebase.firestore.CollectionReference找到:com.google.firebase.firestore.DocumentReferenceMy-bad,抱歉!只是复制并粘贴它。应该是set()
而不是add()
。请参阅我的更新答案。问题是这行代码:CollectionReference mFirestoreProfiles=mFirestore.collection(“profiles”).document(currentuser);导致此错误的原因。不兼容的类型。必需:com.google.firebase.firestore.CollectionReference找到:com.google.firebase.firestore.DocumentReferenceSo现在我得到另一个错误:-(…addOnSuccessListener(com.google.android.gms.tasks.onSuccessListener)您使用的是精确的代码。addOnSuccessListener(/*…*/);
?
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();
}
});