在Mongoose模式中指定一个inheritance的通用模型

我正在使用Mongoose构build一个应用程序,并希望能够执行以下操作:

1)模型Fridge包含一个groceries字段,它是一个数组:

 var Fridge = mongoose.Schema({ groceries: { type: [Grocery.schema] } }); 

2) Grocery模型是一个通用模型,可以被其他模型inheritance:

 var grocerySchema = mongoose.Schema({ name: { type: String } }); var Grocery = mongoose.model("Grocery", grocerySchema); 

3)例如,一个西红柿是一个杂货店:

 var tomatoSchema = mongoose.Schema({ size: { type: Number } }); var Tomato = Grocery.discriminate("Tomato", tomatoSchema); 

现在,如果我实例化一个西红柿,并尝试将它保存在我的冰箱,正确的Tomato属性消失,因为(我猜),冰箱期待一个Grocery所以只保存了Grocery属性。

 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 }] } 

我认为这是Mongoose的预期行为,在很多方面它是有道理的,但我不想将我的Groceries保存在单独的集合中,并在我的Fridge模型中保留对它的引用。 所以我想要我的冰箱保存西红柿的实例,而不是在一个单独的集合中引用一个Grocery对象。 有没有可以让我这样做的devise模式?

谢谢您的回答。 (附注:由于接近吃饭的时间,上面的模型纯粹是为了例子的缘故!

我认为现在不可能。 你认为你必须保存番茄,这将把它放在groceries ,然后你可以从fridge参考。