Mongoose save () -Methode schreibt nicht in die Datenbank

8

Ich aktualisiere also ein Attribut eines Benutzer-Unterdokuments in Mungo, aber es wird nicht in meiner Datenbank gespeichert.

Hier ist meine Funktion:

%Vor%

Das wirklich frustrierende ist, dass updated_user mit dem Attribut account.state "Verified" zurückgibt und die Variable numberTouched mit 1 zurückkehrt, was bedeutet, dass 1 Dokument vom Speichern betroffen ist. Aber wenn ich das Benutzerdokument in meiner Datenbank überprüfe, ist es immer noch der Standardwert von "Pending".

Irgendwelche Gedanken?

P.S. Ich verwende eine Entwicklungsdatenbank mit MongoLab. Aber ich glaube nicht, dass das Problem bei ihnen liegt, da ich andere Attribute einfach aktualisieren kann.

    
Connor Black 26.01.2014, 03:44
quelle

2 Antworten

3

Angenommen, Sie ändern ein Unterdokument vom Typ gemischtes Dokument, müssen Sie user.markModified('accounts') aufrufen, damit Mongoose vor dem Speichern wissen kann, was geändert wurde.

Wenn jedoch zwei dieser Vorgänge gleichzeitig ausgeführt werden, können Daten verloren gehen. Ich würde Ihnen empfehlen, den Befehl findAndModify in Verbindung mit den Operatoren $elemMatch und $set zu verwenden.

    
skieter 11.11.2014 19:03
quelle
-1

In der Zeile, die Sie einfügen

%Vor%

Sie erstellen eine neue Variable unabhängig von der Benutzermodellinstanz. Sie können diese Variable verwenden, um die Daten anzuzeigen (z. B. über eine REST-API), jedoch nicht, um die Benutzermodellinstanz zu ändern. aka. Sie ändern eine andere Variable.

Versuchen Sie stattdessen, den Benutzer, den Sie von der Abfrage findOne () erhalten, zu ändern und zu speichern.

    
Orlando 30.09.2014 01:00
quelle