Voici le code qui permet à l'utilisateur de stocker des données dans Firestore. Le problème est, les données uploadé est visible pour tous les utilisateurs connectés à l'application. Comment pourrais-je seulement permettre à l'utilisateur actuellement connecté pour stocker les données pour leur compte seulement?
Avec Firebase Database J'utilise le code suivant (qui fonctionne, mais pas pour Firestore)
FirebaseUser user = FirebaseAuth.getInstance () getCurrentUser (). Chaîne userId = user.getUid (); mDatabaseRef = FirebaseDatabase.getInstance () getReference (FB_DATABASE_PATH) .child (userId).
Les lignes ci-dessus de code permet aux données d'être stockées et récupérées seulement pour l'utilisateur connecté. Ainsi, les données est unique pour eux seulement.
Comment puis-je répliquer que pour Firestore?
fetch=findViewById(R.id.fetchDocument);
firestore = FirebaseFirestore.getInstance();
upload =findViewById(R.id.uploadText);
upload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
POJO pojo = new POJO();
pojo.setValue("Hello World");
//below code creates collection, creates a inner doc. and uploads the value (pojo)
firestore.collection("RootCollection").document("MyDoc")
.set(pojo).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
//gets called if upload is successful
Toast.makeText(ichild.this,"Upload is successful", Toast.LENGTH_SHORT).show();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(ichild.this,"Upload is not successful" + e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
});
fetch.setOnClickListener(new View.OnClickListener() {
Comment stocker uniquement les données pour le courant utilisateur connecté en utilisant Firestore
Vous pouvez obtenir la même chose si vous passez la uid
à la document()
méthode. Ainsi , les lignes de code suivantes utilisées dans la base de données en temps réel Firebase:
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userId = user.getUid();
mDatabaseRef = FirebaseDatabase.getInstance().getReference(FB_DATABASE_PATH).child(userId);
Est équivalent à Firestore avec:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
DocumentReference uidRef = rootRef.collection("users").document(uid);
POJO pojo = new POJO();
uidRef.set(pojo);