Comenzando con Node.js, angular.js y MongoDB, relaciones de modelado y otros consejos de aceleración

Vengo de Java y del mundo relacional y trato de mojarme los pies. La aplicación en la que estoy trabajando es un sistema de progtwigción de citas que utiliza node.js y MOngo en el backend y el cliente está en angular.js.

Estoy tratando de entender un par de conceptos clave que podrían ser remanentes de mi sesgo de Java. Cualquier ayuda para señalar fragmentos relevantes, se agradece tutoriales.

1) ¿Cómo manejaría las relaciones entre la cita, el cliente y el representante de servicio en Mongo / Node? ¿Se crean los objetos de cita y se almacena una referencia de ID de usuario en la cita? ¿El usuario necesita tener una referencia a la lista de citas?

2) Usuario authn / authz, ya que el nodo se está utilizando como proveedor de servicios reparador, ¿cómo puedo crear un control basado en roles? Por ejemplo, cuando un usuario se registra como representante de servicio, debe ser aprobado. ¿Hay algún módulo que pueda ayudar?

3) ¿Algún módulo genérico que proporcione informes sobre el registro de usuarios, etc.?

4) ¿Cómo administran las personas los permisos en el lado del cliente MVC?

Cualquier punteros son muy apreciados.

Hacer aplicaciones en las que tenga tanto un componente del lado del servidor como un componente del lado del cliente hace que las cosas sean un poco más complicadas que tener un marco del lado del servidor.

  • Cuando se utiliza un marco del lado del cliente como AngularJS, todas sus plantillas se comstackn del lado del cliente, no del lado del servidor. Esa es una gran diferencia de la representación tradicional del lado del servidor. Eso significa que, en lugar de enviar HTML renderizado al cliente, enviaría JSON. Su servidor se convertiría esencialmente en una API REST con emplazamientos de seguridad.

  • No estoy muy familiarizado con AngularJS, más con Ember, pero esencialmente crearía un servicio de descanso: https://gist.github.com/2432692 . Eso se comunicaría con el servidor en una interfaz RESTful.

  • En el servidor, utilizando nodejs, usaría un ORM como Mongoose o algo similar. Puede crear relaciones, documentos, etc. Una nota: tendrá que duplicar sus modelos tanto en el servidor como en el cliente.

  • MongoDB usa bson, una encoding binaria de una cadena / objeto JSON serializado. Debido a que nodejs está creado con el motor V8 JavaScript, JSON es un tipo de objeto natural y, por lo tanto, trabajar con MongoDB es extremadamente simple.

  • Servidor HTTP en NodeJS: NodeJS proporciona una implementación base para un servidor http. No es mucho, pero puede responder y manejar solicitudes. No hay sesión, cookie, soporte de autenticación, por lo que puede usar connect que se basa en el servidor http tradicional o usar ExpressJS que se basa tanto en connect como en el servidor http normal que proporciona el nodo. ExpressJS es extremadamente fácil de comenzar y funciona bien con los backends RESTful.

Es bastante simple Obtenga ExpressJS, cree una nueva aplicación, configure todas las cosas del lado del cliente (angularJS) y los sistemas de módulos si utiliza AMD, CommonJS, Browserify, etc.

No estoy familiarizado con node.js, pero para el diseño de mongodb, tendrá que elegir entre “subdocumentos” y “documentos de enlace”.

1

¿Puede echar un vistazo a cómo estructurar las relaciones de muchos a muchos en la mongoose? .

La idea es recuperar un documento completo donde tenga sentido. Por ejemplo, podría tener el siguiente esquema.

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

aunque la información puede estar duplicada, para consultas, solo debe pulsar un documento / subdocumento.

4

Aunque podría ser del lado del cliente, no significa que el servidor no deba validar. El cliente puede validar lo mejor que pueda, pero el servidor todavía debe verificar. Lo siento, no tengo más que añadir.