在Mongoose模式中指定继承的通用模型

时间:2016-10-24 10:19:12

标签: node.js mongodb mongoose

我正在使用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:由于接近晚餐时间,上面的模型仅仅是为了名字而给出了名字!)

1 个答案:

答案 0 :(得分:1)

我认为现在不可能。您认为必须保存番茄是正确的,这会将其放在groceries中,然后您可以从fridge引用它。