Dans mon schéma Food
, j'ai différents champs basés sur l'autre champ appelé yummy
. Par exemple:Le schéma Mongoose crée un champ de tableau vide
- si
yummy
égalpancake
, mes champs sontdough
etjam
- si
yummy
égalpizza
, mes champs sontdough
,meat
etcheese
etc. Il fonctionne comme prévu lors de l'enregistrement docs - Je viens de passer les champs que je veux être enregistré par le document, car aucun d'entre eux sont requis sauf yummy
. Donc, si je sauver:
{
yummy: 'pizza'
dough: 'thin'
meat : 'peperroni',
cheese: [ObjectId("59a65a4f2170d90b0436ed4b")] // refs to the cheeses collection.
}
Mon document de ressemble prévu.
Le problème est avec le champ de type: Array
. Quand je sauve:
{
yummy: 'pancake',
dough: 'thick',
jam: 'blueberry'
}
Mon document est enregistré avec un champ cheese: []
supplémentaire. Dans mon schéma, le fromage est défini comme suit:
Mongoose.model('Food', {
...
cheese: {
type: [{ type: Mongoose.Schema.ObjectId, ref: 'Cheese' }],
required: false
},
...
});
j'ai vérifié si mongo a besoin de la doc d'avoir un champ tableau prédéfini comme vide en cas de $push
utilisé dans la mise à jour - il ne fonctionne pas. Donc, la question est: comment éviter d'ajouter un champ tableau vide à mon document lors de l'enregistrement?
Cela dépend de votre schéma, si votre schéma a un tableau défini, et il va créer un tableau vide tho à la création de documents. Si vous voulez jouer avec deux versions de la collection (une avec fromage, une sans), créez deux versions du schéma [regardez ici] (https://stackoverflow.com/questions/14453864/use-more-than-one -schema-per-collection-on-mongodb) –
Merci, ça aide. – wscourge
Alors avez-vous trouvé quelque chose?Je suis réellement intéressé –