2012-06-26 3 views
0

Я на самом деле n00b, играя с NodeJS и MongoDB. Я хочу создать что-то, что может быть действительно большим приложением. Поэтому я стараюсь, чтобы приложение было максимально развязано, как я могу.Мне нужна помощь по созданию Facade + Mediator для сохранения в программе NODEJS с использованием MongoDB (и mongoose)

Я вижу, что было бы неплохо абстрагироваться от уровня персистентности, чтобы не допустить, чтобы бизнес-логика не знала, как хранятся данные (я не уверен, что в будущем мне придется отключать MongoDB для РСУБД). Зная это, я подумал о создании FACADE с необходимыми операциями для хранения данных, используя покровителей Mediator для подписки на операции FACADE и их реализации. Этот медиатор будет подключаться к фасаду с использованием event-listeners, а фасад будет использовать события-эмиттеры. Затем модели, которые подписываются на посредника, будут содержать все схемы мангуста и будут отвечать за все проблемы с базами данных/персистентностью. (Имеет ли смысл?)

Я вижу, что мангуста очень плотно подходит к моделям данных. То есть. Я вижу, ожидается, что у меня не будет прототипа Игрока, кроме PlayerSchema и PlayerModel. Итак:

  • Должен ли я использовать модели данных мангуста? (есть ли какие-либо ограничения/проблемы при этом?), кроме необходимости переписать их, если я отключу DB-)
  • Должен ли я преобразовывать модели данных мангуста в свои прототипы бизнес-логики (этим компонентом FACADE)? Должен ли я попробовать другой ORM для доступа к данным MongoDB?

Я действительно хочу сделать эти абстракции, потому что я очень новичок в JavaScript, узле и всех этих технологиях (поэтому я хочу проверить каждую изолированную часть и иметь возможность переключаться между слоями, если вижу, что есть лучшие решения) ,

Любые советы будут очень приветствоваться!

+0

Возможно, вы захотите посмотреть https://github.com/flatiron/resourceful и https://github.com/codebrew/resourceful-mongo –

+0

Этот находчивый отлично выглядит! Я также посмотрю на весь каркас flatiron. Монгомотор очень рано развивается, как сказал его автор, но я буду следить за ним! – Dredok

ответ

0

Если вы не уверены, какую базу данных вы собираетесь в конечном итоге, возможно, вы захотите взглянуть на использование jugglingdb вместо мангуста. Это обеспечит некоторые абстракции уровня данных, которые вы ищете.