Puis-je utiliser mongoose SubDocuments récursivement? J'ai cet objet:Sous-documents mungoose profondeur possible
var Player = {
city: {
energy: {
solar: 20,
fusion: 0
}
}
};
et schémas correspondants:
var PlayerSchema = new Schema({
city: CitySchema
});
PlayerSchema.pre('save', function(next){
this.city = {};
});
var EnergySchema = new mongoose.Schema({
solar: {type: Number, default: 0},
fusion: {type: Number, default: 0}
});
var CitySchema = new mongoose.Schema({
last_update: { type: Date, default: Date.now },
energy: EnergySchema
});
CitySchema.pre('save', function (next) {
this.energy = {};
});
Mais sauver cet objet sauve seule ville sans énergie. (Au cours de PlayerSchema.pre('save', ...)
avec la commande this.city = {};
est créé un objet à partir CitySchema avec des valeurs par défaut, mais sans prendre en note la méthode CitySchema.pre('save', ...)
qui conduit à l'attribut d'énergie non définie dans la ville.)
Je voudrais éviter peuplant et faire des références à travers ObjectId.
Est-il possible d'enregistrer un objet Player avec seulement des sous-documents?
Dans Player après 'this.city = {};' mongoose crée correctement une nouvelle ville avec des valeurs par défaut du schéma. Dans votre dernier 'console.log', la sortie serait:' {lastUpdate: '2017-03-08 ...'} '. Le problème est que cet attribut 'energy: EnergySchema from CitySchema' est manquant: Parce que la méthode' CitySchema.pre ('save', ...); 'n'est pas appelée pendant' PlayerSchema.pre ('save', ...); ' – James07