Premiers pas avec Node.js, angular.js et MongoDB, modélisation des relations et autres astuces de montée en puissance

Je viens de Java et du monde relationnel et j’essaie de me mouiller les pieds. L’application sur laquelle je travaille est un système de prise de rendez-vous utilisant node.js et MOngo sur backend et le client est dans angular.js.

J’essaie de comprendre quelques concepts clés qui pourraient être des vestiges de mon parti pris pour Java. toute aide pour pointer des extraits pertinents, des tutoriels est appréciée.

1) Comment gérer les relations entre rendez-vous, client et représentant de service dans Mongo / Node? Les objects de rendez-vous sont-ils créés et une référence de l’ID utilisateur est-elle stockée dans le rendez-vous? L’utilisateur doit-il avoir une référence à la liste des rendez-vous?

2) Utilisateur authn / authz, étant donné que le noeud est utilisé en tant que fournisseur de services reposant, comment puis-je créer un contrôle basé sur les rôles? Par exemple, lorsqu’un utilisateur s’inscrit en tant que représentant du service, il doit être approuvé. Existe-t-il un module qui peut aider?

3) Un module générique fournissant des rapports sur les inscriptions des utilisateurs, etc.?

4) Comment les utilisateurs gèrent-ils les permissions sur le client MVC?

Tous les indicateurs sont grandement appréciés.

Faire des applications où vous avez à la fois un composant côté serveur et un composant côté client rend les choses un peu plus compliquées que d’avoir simplement une infrastructure côté serveur.

  • Lorsque vous utilisez une infrastructure côté client telle que AngularJS, tous vos modèles sont compilés côté client, pas côté serveur. C’est une énorme différence par rapport au rendu traditionnel côté serveur. Cela signifie qu’au lieu d’envoyer du code HTML au client, vous enverriez du JSON. Votre serveur deviendrait essentiellement une API RESTful avec des emplacements de sécurité.

  • Je ne connais pas très bien AngularJS, mais plutôt Ember, mais vous créeriez essentiellement un service reposant: https://gist.github.com/2432692 . Cela communiquerait avec le serveur sur une interface RESTful.

  • Sur le serveur, à l’aide de nodejs, vous utiliseriez un ORM comme Mongoose ou quelque chose de similaire. Vous pouvez créer des relations, des documents, etc … Une note, vous devrez dupliquer vos modèles sur le serveur et le client.

  • MongoDB utilise bson, un codage binary d’un object / chaîne JSON sérialisé. Comme nodejs est construit à l’aide du moteur JavaScript V8, JSON est un type d’object naturel. Travailler avec MongoDB est donc extrêmement simple.

  • Serveur HTTP sur NodeJS: NodeJS fournit une implémentation de base pour un serveur http. Ce n’est pas beaucoup, mais vous pouvez répondre aux demandes et les traiter. Il n’y a pas de support de session, cookie, authentification, vous pouvez donc utiliser connect qui repose sur le serveur http traditionnel ou ExpressJS qui s’appuie à la fois sur connect et sur le serveur http normal fourni par le nœud. ExpressJS est extrêmement facile à utiliser et fonctionne bien avec les moteurs RESTful.

C’est assez simple. Obtenez ExpressJS, créez une nouvelle application, configurez tous les systèmes côté client (angularJS) et les modules si vous utilisez AMD, CommonJS, Browserify, etc.

Je ne connais pas bien node.js, mais pour mongodb design, vous devrez choisir entre “sous-documents” et “relier des documents”.

1

Vous pouvez voir comment structurer des relations plusieurs à plusieurs chez la mongoose? .

L’idée est de récupérer un document complet lorsque cela a du sens. Par exemple, vous pourriez avoir le schéma suivant.

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

Même si les informations peuvent être dupliquées, pour les requêtes, vous ne frappez qu’un seul document / sous-document.

4

Même s’il peut s’agir du côté client, cela ne signifie pas que le serveur ne doit pas valider. Le client peut valider du mieux qu’il peut, mais le serveur doit quand même vérifier. Désolé, je n’ai plus rien à append.