In meinem Food
Schema, ich habe verschiedene Felder basierend auf dem anderen Feld yummy
genannt. Zum Beispiel:Mongoose Schema erstellt leeres Array Feld
- wenn
yummy
gleichpancake
, meine Felder sinddough
undjam
- wenn
yummy
gleichpizza
, meine Felder sinddough
,meat
undcheese
etc. Es funktioniert wie erwartet beim Speichern Dokumente - Ich übergebe nur die Felder, die ich für das Dokument speichern möchte, da keine von ihnen außer yummy
erforderlich sind. Also, wenn ich sparen:
{
yummy: 'pizza'
dough: 'thin'
meat : 'peperroni',
cheese: [ObjectId("59a65a4f2170d90b0436ed4b")] // refs to the cheeses collection.
}
Mein Dokument sieht aus wie erwartet.
Das Problem ist, mit dem Feld von type: Array
. Als ich spare:
{
yummy: 'pancake',
dough: 'thick',
jam: 'blueberry'
}
Mein Dokument ist mit einem zusätzlichen cheese: []
Feld gespeichert. In meinem Schema wird Käse wie folgt definiert:
Mongoose.model('Food', {
...
cheese: {
type: [{ type: Mongoose.Schema.ObjectId, ref: 'Cheese' }],
required: false
},
...
});
ich geprüft, ob Mongo das Dokument benötigt ein Array-Feld als leer bei $push
in Aktualisierung verwendet vorgegeben zu haben - es funktioniert nicht. Die Frage ist also: Wie vermeide ich das Hinzufügen eines leeren Array-Felds zu meinem Dokument beim Speichern?
Es hängt von Ihrem Schema, wenn Ihr Schema ein Array definiert darin hat, wird es ein leeres Array tho an der Erstellung von Dokumenten zu erstellen. Wenn Sie mit zwei Versionen der Sammlung spielen möchten (eine mit Käse, eine ohne), erstellen Sie zwei Versionen des Schemas [siehe hier] (https://stackoverflow.com/questions/14453864/use-more-than-one -schema-per-sammlung-auf-mongodb) –
Danke, es hilft. – wscourge
Also hast du etwas gefunden?Ich bin wirklich interessiert –