Existe-t-il une possibilité d'ajouter un document à la collection Firestore avec l'ID généré personnalisé, et non l'ID généré par le moteur Firestore.
Merci d'avance pour vos réponses.
Existe-t-il une possibilité d'ajouter un document à la collection Firestore avec l'ID généré personnalisé, et non l'ID généré par le moteur Firestore.
Merci d'avance pour vos réponses.
Pour utiliser un identifiant personnalisé, vous devez utiliser .set
plutôt que .add
Cela crée un document avec l'ID "LA":
db.collection("cities").doc("LA").set({
name: "Los Angeles",
state: "CA",
country: "USA"
})
Ceci est tiré des documents officiels ici
Pour se développer sur les accepté de répondre, si jamais vous vouliez que votre client pour générer un ID aléatoire pour la doc avant de le pousser à Firestore (en supposant le même createId()
fonction existe en dehors de AngularFire2)
const newId = db.createId();
db.collection("cities").doc(newId).set({
name: "Los Angeles",
state: "CA",
country: "USA"
})
Ceci est utile pour régler l'ID d'un champ de référence à un autre document, avant même Firestore enregistre rien. Si vous n'avez pas besoin d'utiliser les sauvés de l'objet tout de suite, cela accélère le processus par pas de vous avoir fait attendre pour l'ID. L' set()
appel est maintenant asynchrone de la pipe vous utilisez peut-être dans Angulaire
Remarquez que je n'ai pas mis id: newId
dans l'ensemble de l'objet, parce que Firestore par défaut n'a pas d'enregistrer l'ID d'un champ dans la doc
db.collection ("utilisateurs"). document (mAuth.getUid ()). set (utilisateur)
Ici, le nom de la collection est "users"
et le nom du document est celui de l'utilisateur UID
Ici, vous devez utiliser set
non add
private void storeData(String name, String email, String phone) {
// Create a new user with a first and last name
Map<String, Object> user = new HashMap<>();
user.put("name", name);
user.put("email", email);
user.put("phone", phone);
// Add a new document with a generated ID
db.collection("users").document(mAuth.getUid()).set(user)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toasty.success(context,"Register sucess",Toast.LENGTH_SHORT).show();
}
});
}
Créer un nouveau document avec ID
createDocumentWithId<T>(ref: string, document: T, docId: string) {
return this.afs.collection(ref).doc<T>(docId).set(document);
}
EX: cet exemple avec take email comme identifiant du document
this.fsService.createDocumentWithId('db/users', {}, credential.user.email);
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.