Unterschied zwischen set mit {merge: true} und update

11

In Cloud Firestore gibt es drei Schreibvorgänge:

1) füge

hinzu

2) stellen Sie

ein

3) update

In den Dokumenten heißt es, dass die Verwendung von set(object, {merge: true}) das Objekt mit dem vorhandenen Objekt zusammenführt.

Das gleiche passiert, wenn Sie update(object) verwenden Also, was ist der Unterschied wenn überhaupt? Es ist merkwürdig, dass Google Logik dupliziert.

    
ZuzEL 06.10.2017, 02:17
quelle

2 Antworten

23

So habe ich den Unterschied verstanden:

  • set ohne Zusammenführung überschreibt ein Dokument oder erstellt es, falls es noch nicht existiert

  • set mit Zusammenführung aktualisiert Felder im Dokument oder erstellt sie, wenn sie nicht existiert

  • update aktualisiert Felder, schlägt aber fehl, wenn das Dokument nicht existiert

  • create erstellt das Dokument, schlägt jedoch fehl, wenn das Dokument bereits existiert

Es gibt auch einen Unterschied in der Art der Daten, die Sie für set und update bereitstellen.

Für set müssen Sie immer dokumentförmige Daten angeben:

%Vor%

Mit update können Sie auch Feldpfade zum Aktualisieren verschachtelter Werte verwenden:

%Vor%     
Scarygami 06.10.2017, 07:35
quelle
10

Ein weiterer Unterschied (die Antwort von Scarygami) zwischen "set with merge" und "update" ist, wenn mit verschachtelten Werten gearbeitet wird.

Wenn Sie ein Dokument haben, das wie folgt strukturiert ist:

%Vor%

und möchte {"friend-uid-3" : true}

hinzufügen

mit diesem:

db.collection('users').doc('random-id').set({ "friends": { "friend-uid-3": true } },{merge:true})

führt zu diesen Daten:

%Vor%

jedoch update verwendet dies:

db.collection('users').doc('random-id').update({ "friends": { "friend-uid-3": true } })

führt zu diesen Daten:

%Vor%     
Finlay Percy 29.11.2017 13:38
quelle