Начало работы с Node.js, angular.js и MongoDB, моделирование отношений и другие подсказки

Я прихожу из Java и реляционного мира, пытаясь намочить ноги. Приложение, над которым я работаю, - это система планирования назначения, использующая node.js и MOngo на бэкэнд, а клиент находится в angular.js.

Я пытаюсь понять пару ключевых понятий, которые могут быть остатками моего смещения Java. любая помощь в указании на соответствующие фрагменты, советы приветствуются.

1) Как мне управлять отношениями между назначением, представителем клиента и службы в Mongo/ Node? Создаются ли объекты назначения и ссылка на идентификатор пользователя, хранящиеся в записи? Нужно ли пользователю иметь ссылку на список встреч?

2) Пользователь authn/authz, так как node используется в качестве сервисного провайдера, как создать элемент управления на основе ролей? Например, когда пользователь регистрируется в качестве представителя службы, он должен быть одобрен. Есть ли модуль, который может помочь?

3) Любой общий модуль, который дает отчеты о регистрации пользователей и т.д.?

4) Как люди управляют разрешениями на стороне MVC на стороне клиента?

Приветствуются любые указатели.

Ответ 1

Выполнение приложений, в которых у вас есть как серверный компонент, так и клиентский компонент, делает вещи немного сложнее, чем просто серверная инфраструктура.

  • При использовании клиентской среды, такой как AngularJS, все ваши шаблоны скомпилированы на стороне клиента, а не на стороне сервера. Это огромная разница с традиционным рендерингом на стороне сервера. Это означает, что вместо отправки отображаемого HTML клиенту вы отправляете JSON. Ваш сервер по существу станет RESTful API с безопасностью.

  • Я не очень знаком с AngularJS, больше с Ember, но вы по существу создали бы успокаивающее обслуживание: https://gist.github.com/2432692. Это будет связываться с сервером на интерфейсе RESTful.

  • На сервере, используя nodejs, вы должны использовать ORM, например Mongoose или что-то подобное. Вы можете создавать отношения, документы и т.д. Одна заметка: вам придется дублировать свои модели как на сервере, так и на клиенте.

  • MongoDB использует bson, двоичное кодирование сериализованной строки/объекта JSON. Поскольку nodejs построен с использованием JavaScript-движка V8, JSON является естественным типом объекта, поэтому работа с MongoDB чрезвычайно проста.

  • HTTP-сервер в NodeJS: NodeJS обеспечивает базовую реализацию для http-сервера. Это не так много, но вы можете отвечать и обрабатывать запросы. Нет поддержки сеанса, cookie, auth, поэтому вы можете использовать connect, который строит поверх обычного HTTP-сервера или использует ExpressJS, который строит как на connect, так и на обычном http сервере, который node предоставляет, ExpressJS чрезвычайно легко начать работу и хорошо работает с бэкэндами RESTful.

Это довольно просто. Получите ExpressJS, создайте новое приложение, настройте все клиентские компоненты (angularJS) и модульные системы, если вы используете AMD, CommonJS, Browserify и т.д.

Ответ 2

Я не знаком с node.js, но для дизайна mongodb вам придется выбирать между "субдокументами" и "связыванием документов".

1

Вы можете взглянуть на как структурировать отношения "многие ко многим" в мангусте?.

Идея состоит в том, чтобы получить полный документ, где это имеет смысл. Например, у вас может быть следующая схема.

{ customer : { name: xxx },
  appointments: [ {date: xx, type : xxx .., servicerep: xxx}, {date: xx, type : xxx .., servicerep: xxx} ]
}

хотя информация может быть дублирована, для запросов вы попадаете только в один документ/субдокумент.

4

Несмотря на то, что это может быть клиентская сторона, это не означает, что сервер не должен проверять. Клиент может проверять как можно лучше, но сервер все еще должен проверять. Извините, я больше не хочу добавлять.