Я строю приложение, используя Mongoose и хотел бы быть в состоянии сделать следующее:Определение общей модели наследования в Mongoose схеме
1) Модель Fridge
содержит groceries
поле, которое является массивом:
var Fridge = mongoose.Schema({
groceries: { type: [Grocery.schema] }
});
2) Grocery
модель представляет собой универсальный один, чтобы быть унаследован другими моделями:
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
в отдельной коллекции. Есть ли шаблон дизайна, который позволил бы мне это сделать?
Благодарим вас за ответ. (P.S: из-за близости к обеденному времени, модели, приведенные выше, были названы, например, просто ради!)
Это грустно :(Я пытаюсь придумать умный взломать, но спасительные ссылки могут быть проще, чем тогда ... –