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.
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.
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.
Tags und Links coffeescript node.js mongodb mongoose