2017-05-25 68 views
2

我剛剛發現了feathersjs,並且非常喜歡它背後的想法,儘管我仍然不確定基於服務的理念如何適用於比簡單的CRUD UI更復雜的應用程序。featherjs處理非數據相關操作和子對象的方式是什麼?

爲了更好地理解它,我舉了一個例子:考慮一個可以創建和分享調查的應用程序。您可以輕鬆管理創建調查服務來創建,更新和獲取調查的屬性(即問題和答案)。但是,如何處理以下幾個方面:

1)有動作,即根本不影響數據的服務調用。一種行動可能是向尚未參與調查的所有受邀用戶發送提醒電子郵件。如果不使用羽毛,我會爲此創建一個專門的快速終點,但這些動作如何符合羽毛哲學?是否應該爲每個操作創建一個服務(僅實現一個HTTP動詞)?這會很快引起混淆。使用掛鉤檢測虛擬域上的更新並觸發該操作?很難記錄和混淆。

2)想象一下,用戶可以給調查添加評論。這些評論將成爲調查模型的一部分(我會爲此使用MongoDB,因此請考慮每個調查對象有一個註釋數組)。客戶網絡將調用GET /survey/123方法的調查服務這將返回其他屬性(問題,答案,..)中的評論。但是如何添加評論?我應該爲它使用一項專門的服務嗎,或者這將如何適應調查服務?這樣的請求將如何?

回答

2

從羽毛鬆弛信道:https://feathersjs.slack.com/messages/C0HJE6A65/

發送電子郵件是在一個鉤細。對於動作,您可以使用某個action屬性進行修補,然後使用掛鉤確定應執行哪個動作等。另一種方法是實現僅create的簡單小型服務。對於評論,我可能會有一個commentssurvey-comments服務,然後您的survey/123可以填充評論。或者網絡可以打2個電話,一個去取得調查結果,另一個取得評論。

+0

新的社區提供的掛鉤可能有助於通過數據庫調用發送該電子郵件異步。 https://github.com/feathersjs/feathers-community-hooks/blob/master/src/run-parallel.js – JohnSz

+0

感謝您的+50! – JohnSz

相關問題