211 votes

Comment ajouter un document avec un identifiant personnalisé à la mémoire (angulaire)

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.

388voto

Finlay Percy Points 884

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

28voto

Papa Kojo Points 361
this.afs.collection('[your collection]').doc('[your ID]').set([your document]);

21voto

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

4voto

Deven Chavda Points 162

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();
        }
    });
}
 

1voto

sun sreng Points 11

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.com

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.

Powered by:

X