nodejs mongoose建模实践
生活随笔
收集整理的這篇文章主要介紹了
nodejs mongoose建模实践
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
一直以來mongoose學習都是比較麻煩的,mongoose-cli試圖簡化學習和測試mongoose部分,并通過app開發流程反思整個過程中業務邏輯部分如何抽象,以期簡化開發與分層實現
app開發流程
如圖
這里首先從交互圖開始,需求統一為交互圖。
- 開發拿到交互圖,首先要根據交互【拆分功能點】
- 根據功能點形成【api文檔】
- 根據功能點和已有model進行【建模】
- 根據模型,【模擬數據】,并校驗模型直到可行
- 根據功能點+模型,編寫api接口
那么,我們看看這個流程里什么是最核心的東西?
- 功能點
- 模型
這2點其實是整個app里最核心的部分,即業務部分,我們如果把握住此處的設計,輸出【api文檔】 + 模型,即可拆分工作任務,WBS
業務建模
- 避免過度設計,夠用就好
- 如果時間允許就給以后多留點擴展
nodejs + mongodb(mongoose)
根據上面的流程,結合MEAN架構,需要交付
- api文檔
- mongoose模型
如何簡化api文檔?
能夠根據api文檔生成routes和controller部分代碼,并且可逆
留空model和service即可。
如何簡化model操作?
- scaffold 腳手架,可以快速完成模型相關crud操作,界面也可以。
- moa-console 控制臺,在命令行即可測試模型方法等
- mongoose-cli 隨時隨地,測試model,融合bluebird等promise庫,讓業務處理更簡單
- 可以把model直接打包發布到npm (TODO)
模型固化成node module的意義
- 復用,多系統共享model
- 可以通過xxx@1.0類似的版本,在npm里進行版本限定
- 耦合低
- 測試容易
- 新人培訓容易
mongoose-cli
上面是對于業務建模的思考,那么我們如何快速的進行建模,又能不和現有代碼耦合呢?
之前說過,業務邏輯,基本就是model + 流程控制,能否直接都集成到一起?
mongoose-cli主要解決的就是這個問題
mongoose best practice
- mongoose + mongoosedao
- bluebird
Install
[sudo] npm install -g mongoose-cliUsage
第一步:使用mongoose命令來初始化測試目錄結構
? d mongoose ? d cd mongoose-console ? mongoose-console ls LICENSE README.md app config db.js example.js index.js node_modules package.json? mongoose-console mc第二步: 執行mc命令,在moa-console中測試
? mongoose-console mc 提醒:debug狀態連接數據庫: mongodb://127.0.0.1:27017/mongoose-console-test[2015-08-06 20:59:47.378] [INFO] [default] - undefined[2015-08-06 20:59:47.379] [INFO] [default] - Welcome to the Moa console. [2015-08-06 20:59:47.380] [INFO] [default] - undefinedAvailable Entity: - Bson- Index Moa> [mongoose log] Successfully connected to: NaN mongoose open successundefined Moa> .list Available Entity: - Bson- Index Moa> Bson.find({},function(err,doc){console.log(doc)}) Moa> [ { _id: 55c35575b92da9b4fbeb3b26,user_name: 'alfred sang',__v: 0,created_at: Thu Aug 06 2015 20:39:17 GMT+0800 (CST) },{ _id: 55c356f4d1b21737ffefb2d4,user_name: 'alfred sang',__v: 0,created_at: Thu Aug 06 2015 20:45:40 GMT+0800 (CST) },{ _id: 55c356fb12e6f243ffb2c4dd,user_name: 'alfred sang',__v: 0,created_at: Thu Aug 06 2015 20:45:47 GMT+0800 (CST) },{ _id: 55c35a3fa6474371030783a3,user_name: 'alfred sang',__v: 0,created_at: Thu Aug 06 2015 20:59:43 GMT+0800 (CST) } ](^C again to quit) Moa>example
? mongoose-console node example.js 提醒:debug狀態連接數據庫: mongodb://127.0.0.1:27017/mongoose-console-test [mongoose log] Successfully connected to: NaN mongoose open success { __v: 0,user_name: 'alfred sang',_id: 55c35a3fa6474371030783a3,created_at: Thu Aug 06 2015 20:59:43 GMT+0800 (CST) } ^C%全文完
歡迎關注我的公眾號【node全棧】
轉載于:https://my.oschina.net/nodeonly/blog/489077
總結
以上是生活随笔為你收集整理的nodejs mongoose建模实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle修改字段类型方法
- 下一篇: 编程获取linuxservercpu、内