日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nodejs mongoose建模实践

發布時間:2024/1/17 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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-cli

Usage

第一步:使用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建模实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。