我可以递归使用mongoose SubDocuments吗? 我有这个对象:
var Player = {
city: {
energy: {
solar: 20,
fusion: 0
}
}
};
和相应的模式:
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 = {};
});
但保存此对象只能节省没有能量的城市。 (使用命令PlayerSchema.pre('save', ...)
this.city = {};
期间,使用默认值从CitySchema创建对象,但不会引入注释方法CitySchema.pre('save', ...)
,这会导致城市中未定义的能源属性。)
我想避免通过ObjectId填充和引用。
是否可以使用子文档保存Player对象?
答案 0 :(得分:0)
由于您在此处将城市定义为空对象:
PlayerSchema.pre('save', function(next){
console.log(this.city); //Should be { energy: { solar, fusion }}
this.city = {};
console.log(this.city); //Now {}
});
除此之外它应该可以正常工作。