Ich habe ein Dokument von einem Mungo gefunden, das ich vor der JSON-Codierung und dem Versenden als Antwort erweitern möchte. Wenn ich versuche, dem Dokument Eigenschaften hinzuzufügen, wird dies ignoriert. Die Eigenschaften werden nicht angezeigt, wenn Object.getOwnPropertyNames(doc)
eine normale Erweiterung nicht möglich ist. Das Seltsame ist, dass es JSON.parse(JSON.encode(doc))
funktioniert und ein Objekt mit allen korrekten Eigenschaften zurückgibt. Gibt es einen besseren Weg, dies zu tun?
200
Model.find({})
den Dokumenten zurückgeben? Return ist ein Array. Können Sie docs.toObject?var docArray = modelArray.map(function(model) { return model.toObject(); });
Eine andere Möglichkeit, dies zu tun, besteht darin, Mongoose mitzuteilen, dass Sie lediglich eine einfache JavaScript-Version des zurückgegebenen Dokuments benötigen, indem Sie es
lean()
in der Abfragekette verwenden. Auf diese Weise überspringt Mongoose den Schritt des Erstellens der vollständigen Modellinstanz und Sie erhalten direkt eine, diedoc
Sie ändern können:quelle
lean
ist im Allgemeinen leistungsfähiger, da Sie den Aufwand für die erstmalige Erstellung des vollständigen Mongoose-Dokuments überspringen.lean()
der Abfrage wird die Option festgelegt, bevor die Abfrage tatsächlich (vonexec
) ausgeführt wird, sodass die Ergebnisse direkt in ihrer "schlanken" Form vorliegen. In dieser Frage finden Sie Informationen zu den positiven Auswirkungen des Anrufs auf die Leistunglean
.Der schnelle Weg, wenn die Eigenschaft nicht im Modell enthalten ist:
document.set( key,value, { strict: false });
quelle
Eine bessere Möglichkeit, ein solches Problem anzugehen, ist die Verwendung
doc.toObject()
dieser MethodeWeitere Optionen sind:
getters:
Wenden Sie alle Getter an (Pfad- und virtuelle Getter).virtuals:
Anwenden virtueller Getter (kann Getter-Option überschreiben)minimize:
leere Objekte entfernen (standardmäßig true)transform:
Eine Transformationsfunktion, die vor der Rückgabe auf das resultierende Dokument angewendet wirddepopulate:
Entvölkern Sie alle aufgefüllten Pfade und ersetzen Sie sie durch ihre ursprünglichen Verweise (standardmäßig false).versionKey:
ob der Versionsschlüssel enthalten sein soll (standardmäßig true)so kann man zum Beispiel sagen
und jetzt wird es funktionieren.
Referenz finden Sie unter: http://mongoosejs.com/docs/api.html#document_Document-toObject
quelle
Um ein einfaches Objekt aus dem Mongoose-Dokument zu erhalten, habe ich die
_doc
Eigenschaft wie folgt verwendetIch habe es versucht,
toObject
aber es gab mir Funktionen, Argumente und alle anderen Dinge, die ich nicht brauche.quelle
_
am Anfang ist nicht die ideale Lösung. Die Verwendung von Lean könnte Ihren Fall lösen._doc
Eigentum viele Male ohne Probleme benutzt. Mit derlean
Methode erhalten Sie ein einfaches Objekt, an dem Sie keine Mungo-Modelloperationen ausführen können.Sie können das Objekt auch stringifizieren und dann erneut analysieren, um das normale Objekt zu erstellen. Zum Beispiel wie: -
quelle