mongoose schlanke Abfrage, virtuelle nicht angezeigt

8

Ich habe das folgende Schema auf mongoose eingerichtet, ich benutze Version 3.6.17:

%Vor%

Und die folgenden virtuellen Dateien:

%Vor%

Wenn ich eine zusammengefasste Abfrage mache:

%Vor%

An diesem Punkt kehren die virtuellen Objekte zurück, aber sie kehren mit dem Attribut this.cover oder this.video undefined zurück.

Und wenn ich eine Post.findOne (..). lean (). populate (...) usw. mache, bekomme ich die virtuellen überhaupt nicht, auch nicht mit einer Post.find (). mager (). füllen (...)

Fehle ich etwas im Post-Schema, um die virtuellen zurückzugeben, oder mache ich etwas falsch? Und warum geben die virtuellen Dateien bei der Aggregatoperation den Wert "this.cover" als undefiniert zurück?

Danke!

    
maumercado 21.08.2013, 16:59
quelle

1 Antwort

21

lean -Abfragen geben die rohe MongoDB -Treiberantwort als reines js -Objekt zurück. Also, es gibt keine% Co_de%,% Co_de%,% Co_de% oder andere "Mongoose Magie" drin. Weitere Informationen finden Sie API-Dokumentation .

Der Punkt von getters Abfragen besteht darin, Ihre Objekte so schnell wie möglich zurückzugeben. Wenn Sie setters benötigen, verwenden Sie gewöhnliche Mongoose-Abfragen.

Wie bei der Aggregation ist es 100% virtuals Feature und Mongoose kann es nicht kontrollieren. Wenn Sie also lean von Mongoose aufrufen, funktioniert es genauso wie virtuals in MongoDB console. aggregate kann nicht mit virtuellen Systemen arbeiten, da solche Felder in Ihrer Datenbank nicht vorhanden sind. Mongoose kann Ihre Aggregationsabfrage nicht einmal nach Ihrem Schema (wie bei aggregate arguments) darstellen, da die Aggregation die Form des Dokuments in jedem Schritt ändert. Siehe Mongoose-API-Dokumente und MongoDB Docs für weitere Informationen.

    
Leonid Beschastny 22.08.2013, 14:18
quelle

Tags und Links