我正在使用Mongoose构建应用程序,并希望能够执行以下操作:
1)模型Leaflet.VectorGrid
包含一个Fridge
字段,它是一个数组:
groceries
2)var Fridge = mongoose.Schema({
groceries: { type: [Grocery.schema] }
});
模型是通用模型,由其他模型继承:
Grocery
3)例如,番茄是杂货店:
var grocerySchema = mongoose.Schema({
name: { type: String }
});
var Grocery = mongoose.model("Grocery", grocerySchema);
现在,如果我实例化番茄并尝试将其保存在冰箱中,正确的var tomatoSchema = mongoose.Schema({
size: { type: Number }
});
var Tomato = Grocery.discriminate("Tomato", tomatoSchema);
属性会消失,因为(我猜),冰箱需要Tomato
因此只保存Grocery
1}}属性。
Grocery
我认为这是Mongoose的预期行为,并且在很多方面它都有意义,但我不希望将var tomato = new Tomato({ name: "a big nice tomato", size: 20 });
fridge.groceries = [tomato];
fridge.save(...)
// now fridge === { groceries: [{ name: "a big nice tomato" }] }
// and not { groceries: [{ name: "a big nice tomato", size: 20 }] }
保存在单独的集合中,并在Groceries
中保留对它的引用模型。所以我希望我的冰箱能够容纳西红柿的实例,而不是在单独的集合中引用Fridge
对象。 是否有允许我这样做的设计模式?
感谢您的回答。 (P.S:由于接近晚餐时间,上面的模型仅仅是为了名字而给出了名字!)
答案 0 :(得分:1)
我认为现在不可能。您认为必须保存番茄是正确的,这会将其放在groceries
中,然后您可以从fridge
引用它。