2015-02-27 2 views
2

У меня есть сервер, который хранит записи, представляющие объекты, и который использует Mongoose для управления этими записями. Я хочу иметь возможность запрашивать/обновлять/etc. все объекты с простым API (т. е. одна конечная точка). Различные типы объектов имеют некоторые одинаковые атрибуты и некоторые разные атрибуты, поэтому один, static Схема объекта не будет работать. Вместо этого я все же хочу иметь одну схему, но я хочу немного изменить ее, добавив/удалив поля при создании каждого нового объекта с полями, которые/нет в зависимости от типа объекта , Мне не нужна смешанная схема, потому что я хочу, чтобы проверка ошибок для каждого типа объекта. Я хочу одну схему (в отличие от другой схемы для каждого типа объекта), так что я могу просто сделатьОбъединение нескольких аналогичных схем мангуста в одну схему

Object = mongoose.model('Object', ObjectSchema); 
Object.findOne({objectType: "type1"}, function(err, model) { 
    ... 
}); 

Так в основном, я хочу проверки поля, сохраняя при этом определенную гибкость для атрибутов, и один указать на запрос/обновление/и т. д. мои записи объектов. Если я изменю схему с каждым новым объектом, перекомпилирую ее в модель и создаю новый экземпляр этой модели, будут ли все экземпляры разных моделей (скомпилированные из разных измененных версий одной и той же схемы) еще запрошенными, как указано выше?

Очевидно, что я новичок в Mongoose. Я просто много говорил о схеме здесь, и я честно не знаю, следует ли мне использовать слово «модель» вместо «схемы» в некоторых местах. Я просто не знаю, как я могу добиться всего этого. Дайте мне знать, если я не имею никакого смысла.

ответ

0

Мы успешно используем функциональность наследования и дискриминатора модели мангуста для очень похожего сценария. Смотрите здесь для примера:

http://www.laplacesdemon.com/2014/02/19/model-inheritance-node-js-mongoose/

Вы также мог бы используйте этот плагин: https://www.npmjs.com/package/mongoose-schema-extend

+0

Geeze ... это пример серьезной неспособности правильно слово мой вопрос. Если бы я только искал «наследование схемы», я бы нашел множество ответов. Благодаря! –

+0

Первая из двух ссылок мертва на данный момент. Не могли бы вы включить предлагаемое решение в ответ? @reto –

Смежные вопросы