So in the following on Success Listener code:
database.collection("users")
.add(users)
.addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
}
})
I am getting the error:
'addOnSuccessListener(com.google.android.gms.tasks.OnSuccessListener<? super com.google.firebase.firestore.DocumentReference>)' in 'com.google.android.gms.tasks.Task' cannot be applied to '(anonymous com.google.android.gms.tasks.OnSuccessListener<com.google.firebase.firestore.DocumentSnapshot>)'
How to resolve this?
CodePudding user response:
It's as the stacktrace implies, you're using the wrong parameter in the listener. You need to use OnSuccessListener<DocumentReference> or any superclass of DocumentReference.
EDIT:
Reference from Firebase : Add a document
You need to use DocumentReference:
Map<String, Object> data = new HashMap<>();
data.put("name", "Tokyo");
data.put("country", "Japan");
db.collection("cities")
.add(data)
.addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
@Override
public void onSuccess(DocumentReference documentReference) {
Log.d(TAG, "DocumentSnapshot written with ID: " documentReference.getId());
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Error adding document", e);
}
});
Use the resulting id to get the document again.
CodePudding user response:
Assuming that you have a database structure that looks like this:
Firestore-root
|
--- users (collection)
|
--- $uid (document)
|
--- // user fields.
To check if a particular users already exists, please use the following lines of cde:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseFirestore db = FirebaseFirestore.getInstance();
DocumentReference uidRef = db.collection("users").document(uid);
uidRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document != null) {
Log.d("TAG", "User already exists.");
} else {
Log.d("TAG", "User doesn't exist.");
}
} else {
Log.d("TAG", task.getException().getMessage()); //Never ignore potential errors!
}
}
});
