So fügen Sie dem Firestore ein Dokument mit einer benutzerdefinierten ID hinzu


Antworten:


200

Um eine benutzerdefinierte ID zu verwenden .set, müssen Sie diese verwenden.add

Dadurch wird ein Dokument mit der ID "LA" erstellt:

db.collection("cities").doc("LA").set({
    name: "Los Angeles",
    state: "CA",
    country: "USA"
})

Dies ist den offiziellen Dokumenten hier entnommen


1
Was ist, wenn ich dem Dokument hinzufügen möchte "LA"? Das wird nicht funktionieren: .doc("LA").add({...})Bitte sagen Sie, wie ich das machen kann.
Shubham Kushwah

2
.add()entspricht.doc().set()
roshnet

16
this.afs.collection('[your collection]').doc('[your ID]').set([your document]);

2
Eine Erklärung wäre hier hilfreich!
user3483203

7

Um die akzeptierte Antwort zu erweitern, falls Sie jemals wollten, dass Ihr Client eine zufällige ID für das Dokument generiert, bevor Sie zu Firestore createId()wechseln (vorausgesetzt, dieselbe Funktion existiert außerhalb von AngularFire2).

const newId = db.createId();
db.collection("cities").doc(newId).set({
    name: "Los Angeles",
    state: "CA",
    country: "USA"
})

Dies ist nützlich, um die ID als Referenzfeld in einem anderen Dokument festzulegen, noch bevor Firestore etwas speichert. Wenn Sie das gespeicherte Objekt nicht sofort verwenden müssen, beschleunigt dies den Vorgang, da Sie nicht auf die ID warten müssen. Der set()Aufruf ist jetzt asynchron von der Pipe, die Sie möglicherweise in Angular verwenden

Beachten Sie, dass ich id: newIddas festgelegte Objekt nicht eingefügt habe , da Firestore die ID standardmäßig nicht als Feld im Dokument speichert


2

Sie können es so machen

// Inject AngularFirestore as dependency 
private angularFireStore: AngularFirestore // from from 'angularfire2/firestore'

// set user object to be added into the document
let user = {
  id: this.angularFireStore.createId(),
  name: 'new user'
  ...
}

// Then, finally add the created object to the firebase document
angularFireStore.collection('users').doc(user.id).set(user);

1

db.collection ("Benutzer"). document (mAuth.getUid ()). set (Benutzer)

Hier lautet der Name der Sammlung "users"und der Dokumentname der des BenutzersUID

Hier musst du setnicht verwendenadd

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

1

Erstellen Sie ein neues Dokument mit ID

  createDocumentWithId<T>(ref: string, document: T, docId: string) {
    return this.afs.collection(ref).doc<T>(docId).set(document);
  }

EX: In diesem Beispiel wird E-Mail als ID für das Dokument verwendet

this.fsService.createDocumentWithId('db/users', {}, credential.user.email);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.