2016-04-24 8 views
0

Ich möchte den richtigen Weg wissen, um dieses Problem zu lösen. Ich referenziere eine Sammlung über Mungo in meinem Node-Code. Ich habe bestimmte Funktionen, die das Dokument ändern und nach jedem Abschnitt der Änderungen, die ich es speichern möchte (aufgrund der Tatsache, dass der Code unsicher ist, ob es wieder woanders im Code gespeichert werden muss). Ich könnte einen ziemlich verschachtelten Code schreiben, um zu bestimmen, welche Sicherung die letzte Sicherung sein sollte, die ich gemacht habe, aber es verursacht, dass der Code extrem komplex wird, was scheinbar keinen guten Grund hat.Knoten - Workaround für Mungo, der zweimal nach zweimaligem Speichern drückt

Grundsätzlich meinen Code endet wie folgt aussehen:

collection.attributeArray.push(item); 
collection.save(); 
collection.save(); 

Dies attributeArray Ergebnisse wie diese

[item, item] 

anstatt einfach

[item] 

Gibt es eine vernünftige Art und Weise sieht Bewerkstelligen Sie dies, ohne zu wissen, welche Rettung Ihre letzte sein wird?

Antwort

1

Mongoose-Tracks pushen Änderungen an Dokumenten-Arrays, indem sie eine atomare $ pushAll-Operation registrieren. Ein Workaround dafür wäre zu tun

collection.attributeArray = collection.attributeArray.concat([ item ]); 
+0

Danke für die Antwort, ich glaube, das ist der beste Weg, um das Problem anzugehen. –

0

Es ist wirklich schwer, das Problem ohne alle Codeblocks zu sehen. Bitte fügen Sie Ihren gesamten Codeblock hinzu.

Aber ich habe eine Vermutung. Wahrscheinlich, Ihre collection.attributeArray.push(item); in einer Schleife. Pushing item zweimal und es spart mehrmals. Wie ich schon sagte, es ist nur raten. Anderenfalls wirkt sich das doppelte Speichern nicht darauf aus, dass Elemente doppelt hinzugefügt werden.

In einem anderen Problem, warum verwenden Sie .save() 2 mal? Benutze es nur einmal, bevor du deinen Callback (oder das Ende deines Codes) aufruft.

Verwandte Themen