Ich habe mehrere Posts über eingebettete und verknüpfte Dokumente in Mongoose gelesen und gelesen. Basierend auf dem, was ich gelesen habe, habe ich Schluss gekommen, dass es am besten wäre Schemastruktur ähnlich der folgenden haben:Wie verschachtelte eingebettete Mongoose-Dokumente bevölkert werden
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);
Die Daten definiert in CategoriesSchema, ColorsSchema und MaterialsSchema wird nicht sehr oft ändern, wenn überhaupt. Ich entschied, dass es besser wäre, alle Daten im Katalogmodell zu haben, denn obwohl es mehrere Kategorien, Farben und Materialien gibt, wird es nicht so viele geben und ich muss keine davon unabhängig vom Katalog finden.
Aber ich bin total verwirrt über das Speichern von Daten in das Modell. Hier ist, wo bekomme ich ratlos:
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){
});
Mit einem verschachtelten eingebettetes Schema wie diese, wie ich bekommen Daten in die Materialien und Farben eingebettete Dokumente?
Die Methode .push() scheint für die verschachtelten Dokumente nicht verfügbar zu sein.
Wenn es viele Katalog in der Sammlung gibt. Wie werden wir zu bestimmten ID schieben? –