Node.js 開源論壇
Node.js 開源論壇
先說到這裡,cqrs中規範了很多可用工具,靈活且強大,要靈活應用就要不拘一格,根據自己實際需要來發揮其潛力。
Node.js 開源論壇採用JSDM框架開發 , JSDM的誕生得益於我在jdon的薰陶。JSDM是node.js的CQRS DDD 框架的實現。開源論壇的領域層基本完成
http://github.com/brighthas/forum
下面說一下開源論壇領域層的開發。
我劃分出一些 aggre :
使用者 user
私信 message
欄目 column
主題 topic
topic有一個replyTree是為了表示此主題reply的關係,是個樹結構。只記錄相關的reply id。
回帖 reply
下面透過建立reply說明 cqrs的好處。
當有create a reply event 時,會呼叫 對應 topic.appReply(parentid,replyid) 新增的是reply id , parentis 是 reply的父reply,可有可無。
這個程式碼可以放在 command handle裡,這個程式碼也可以放在 event handle裡寫,cqrs的靈活就是透過核心domain的event來寫擴充套件logic
handle3.commandName = "create a reply"; function handle3(args, callback) { my.services.postReplyCheck(args.authorId, function(pass) { if (pass) { my.repos.Reply.create(args, function(err, reply) { if (reply) { my.repos.Topic.get(reply.topicId, function(topic) { // 新增對應的id關係到topic,這個程式碼也可以放在 event handle裡 topic.addReply(reply.parentId, reply.id); }) } }); } }); callback(); } <p class="indent"> |
如果放在event handle裡可以寫成:
handle1.eventName = "Reply.*.create"; // 監聽這個事件 function handle1(reply){ ... my.repos.Topic.get(reply.topicId,function(topic){ topic.addReply(reply.parentId, reply.id); }) ... } <p class="indent"> |
在說一下repository
每個aggre對應一個repository物件,比如topic對應的repository程式碼如下:需要實現3個方法
// doman/repos.js // 建立一個repository var topicRepo = new my.Repository("Topic"); // 實現生成方法,jsdm框架內部呼叫它 topicRepo._create = function (args, callback) { var Topic = my.Aggres.Topic; var topic = new Topic(args); if(topic.hasError()){ callback(topic.errors); }else{ callback(null, topic); } } // json資料 -> aggre物件 ,jsdm框架內部呼叫 topicRepo._data2aggre = function (data) { var Topic = my.Aggres.Topic; return Topic.reborn(data); } // aggre -> json , jsdm框架內部呼叫 topicRepo._aggre2data = function (aggre) { return aggre.toJSON(); } <p class="indent"> |
先說到這裡,cqrs中規範了很多可用工具,靈活且強大,要靈活應用就要不拘一格,根據自己實際需要來發揮其潛力。
[該貼被brighthas於2014-01-27 04:06修改過]
相關文章
- 開源Node.js論壇上線了Node.js
- NodeBB – 基於 Node.js 的開源論壇Node.js
- 用DDD開發開源論壇
- 讓論壇迴歸討論!免費開源的輕量級論壇程式推薦
- 個人 Laravel 論壇專案 (程式碼開源)Laravel
- java 開源的論壇系統推薦Java
- LAMP開源高峰論壇10月23日在北京召開(轉)LAMP
- 分享6款國內、外開源PHP輕論壇CMS程式PHP
- 奇威IT論壇正式開通
- 中文ORACLE開發工具論壇Oracle
- "Linux開源應用技術論壇"亮相高交會(轉)Linux
- 開源新聞速遞:Ubuntu 官方論壇遭遇了 SQL 注入攻擊UbuntuSQL
- 如何在 Ubuntu Linux 16.04上安裝開源的 Discourse 論壇UbuntuLinux
- 網站論壇:火龍論壇 正式成立網站
- ITPUB論壇
- oracle 論壇Oracle
- 開始研究GoldenGate,開闢小論壇Go
- 請問這論壇開發有討論群不
- GoroBBS, 一個內建了全文搜尋引擎的開源bbs論壇系統Go
- StackOverFlow--Clone:國外問答論壇“知乎”的Python開源複製Python
- XDA 開發者論壇譴責小米違反 GPLv2 開源條例
- 想要搭建個論壇?Guide哥調研了100來個 Java 開源論壇系統,發現這 5 個最好用!GUIIDEJava
- 再論開源
- 心寄開源,合規護航|2022開放原子全球開源峰會開源合規分論壇即將開幕
- Spring Framework中文論壇開張啦SpringFramework
- 論治理與創新,2022 開放原子全球開源峰會 OpenAnolis 分論壇圓滿落幕NaN
- 開幕在即 |2022開放原子全球開源峰會OpenAtomOpenHarmony分論壇
- Jmeter(二十六) - 從入門到精通 - 搭建開源論壇JForum(詳解教程)JMeter
- 看JDon論壇隨感一篇——中國成功的開源專案在哪裡?
- Discuz!論壇搭建
- Oracle Developer 論壇OracleDeveloper
- OldLinux論壇Linux
- ORACLE 中文論壇Oracle
- EXCEL高手論壇Excel
- 開放原子開源基金會理事長楊濤出席數字中國軟體開源分論壇並演講
- 專案實訓——BBS論壇開發(一)
- 為了學JAVA,我也開了論壇Java
- 【修羅論壇】xiuno論壇新增登錄檔單項流程