J'ai lu et relu plusieurs articles sur les documents incorporés et liés dans Mongoose. Sur la base de ce que j'ai lu, je l'ai conclu qu'il serait préférable d'avoir une structure de schéma similaire à ce qui suit:Comment remplir des documents incorporés Mongoose imbriqués
var CategoriesSchema = new Schema({
year : {type: Number, index: true},
make : {type: String, index: true},
model : {type: String, index: true},
body : {type: String, index: true}
});
var ColorsSchema = new Schema({
name : String,
id : String,
surcharge : Number
});
var MaterialsSchema = new Schema({
name : {type: String, index: true},
surcharge : String,
colors : [ColorsSchema]
});
var StyleSchema = new Schema({
name : {type: String, index: true},
surcharge : String,
materials : [MaterialsSchema]
});
var CatalogSchema = new Schema({
name : {type: String, index: true},
referenceId : ObjectId,
pattern : String,
categories : [CategoriesSchema],
description : String,
specifications : String,
price : String,
cost : String,
pattern : String,
thumbnailPath : String,
primaryImagePath : String,
styles : [StyleSchema]
});
mongoose.connect('mongodb://127.0.0.1:27017/sc');
exports.Catalog = mongoose.model('Catalog', CatalogSchema);
Les données définies dans CategoriesSchema, ColorsSchema et MaterialsSchema ne changera pas très souvent, voire jamais. J'ai décidé qu'il serait préférable d'avoir toutes les données dans le modèle Catalogue, car s'il y a plusieurs catégories, couleurs et matériaux, il n'y en aura pas beaucoup et je n'ai pas besoin de les trouver indépendamment du catalogue.
Mais je suis totalement confus au sujet de la sauvegarde des données dans le modèle. Voilà où je suis déconcerté:
var item = new Catalog;
item.name = "Seat 1003";
item.pattern = "91003";
item.categories.push({year: 1998, make: 'Toyota', model: 'Camry', body: 'sedan' });
item.styles.push({name: 'regular', surcharge: 10.00, materials(?????)});
item.save(function(err){
});
Avec un schéma intégré imbriqué comme celui-ci, comment j'obtenir des données dans les matériaux et les couleurs des documents intégrés?
La méthode .push() ne semble pas être disponible pour les documents imbriqués.
S'il y a beaucoup de catalogue dans la collection. comment allons-nous pousser à l'identification particulière ?? –