2017-05-25 2 views
2

Je viens de découvrir feathersjs et j'aime vraiment l'idée qui la sous-tend, même si je ne sais toujours pas comment la philosophie basée sur les services peut convenir à des applications qui sont plus complexes qu'une simple interface utilisateur CRUD. Pour mieux comprendre, j'ai inventé un exemple: Considérons une application où vous pouvez créer et partager des enquêtes. Vous pouvez facilement créer un sondage service pour créer, mettre à jour et obtenir les propriétés d'un sondage (questions et réponses). Mais comment traiter les aspects suivants:Quelle est la manière de gérer les actions non liées aux données et les objets enfants?

1) Il existe actions, c'est-à-dire des invocations de service qui n'affectent pas du tout les données. Une action pourrait être d'envoyer un e-mail de rappel à tous les utilisateurs invités qui n'ont pas encore participé à une enquête. Si je n'utilisais pas de plumes, je créerais un point de terminaison explicite dédié pour cela, mais comment ces actions s'inscrivent-elles dans la philosophie des plumes? Devrait-on créer un service (implémentant seulement un verbe HTTP) par action? Cela va devenir confus bientôt. Utilisez hooks qui détectent les mises à jour sur les champs virtuels et déclenchent l'action? Difficile à documenter et déroutant aussi.

2) Imaginez que les utilisateurs puissent ajouter des commentaires à un sondage. Les commentaires feront partie du modèle d'enquête (j'utiliserais MongoDB pour cela, donc considérez chaque objet d'enquête comme ayant un commentaires tableau). Le client Web appelait la méthode GET /survey/123 sur le service d'enquête qui renvoyait les commentaires parmi les autres propriétés (question, réponses, ..). Mais qu'en est-il de l'ajout de commentaires? Dois-je utiliser un service dédié pour cela, ou comment cela s'intégrerait-il dans le service de l'enquête? À quoi ressemblerait une telle demande?

Répondre

2

du canal mou Plumes: https://feathersjs.slack.com/messages/C0HJE6A65/

Envoi d'un e-mail est bien dans un crochet. Pour les actions, vous pouvez faire un correctif avec un certain attribut action, puis utiliser des crochets pour déterminer quelle action doit être effectuée, etc. L'autre façon serait un petit service simple qui n'a que create implémenté. Pour les commentaires j'aurais probablement un service comments ou survey-comments et alors votre survey/123 pourrait remplir les commentaires. Ou le web pourrait faire 2 appels, un pour aller chercher l'enquête, l'autre pour aller chercher les commentaires.

+0

Un nouveau hook fourni par la communauté peut être utile pour envoyer ce courrier asynchrone avec l'appel de la base de données. https://github.com/feathersjs/feathers-community-hooks/blob/master/src/run-parallel.js – JohnSz

+0

Merci pour le +50! – JohnSz