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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nodejs mongoose建模实践

發(fā)布時(shí)間:2024/1/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nodejs mongoose建模实践 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

一直以來mongoose學(xué)習(xí)都是比較麻煩的,mongoose-cli試圖簡化學(xué)習(xí)和測試mongoose部分,并通過app開發(fā)流程反思整個(gè)過程中業(yè)務(wù)邏輯部分如何抽象,以期簡化開發(fā)與分層實(shí)現(xiàn)

app開發(fā)流程

如圖

這里首先從交互圖開始,需求統(tǒng)一為交互圖。

  • 開發(fā)拿到交互圖,首先要根據(jù)交互【拆分功能點(diǎn)】
  • 根據(jù)功能點(diǎn)形成【api文檔】
  • 根據(jù)功能點(diǎn)和已有model進(jìn)行【建模】
  • 根據(jù)模型,【模擬數(shù)據(jù)】,并校驗(yàn)?zāi)P椭钡娇尚?/li>
  • 根據(jù)功能點(diǎn)+模型,編寫api接口

那么,我們看看這個(gè)流程里什么是最核心的東西?

  • 功能點(diǎn)
  • 模型

這2點(diǎn)其實(shí)是整個(gè)app里最核心的部分,即業(yè)務(wù)部分,我們?nèi)绻盐兆〈颂幍脑O(shè)計(jì),輸出【api文檔】 + 模型,即可拆分工作任務(wù),WBS

業(yè)務(wù)建模

  • 避免過度設(shè)計(jì),夠用就好
  • 如果時(shí)間允許就給以后多留點(diǎn)擴(kuò)展

nodejs + mongodb(mongoose)

根據(jù)上面的流程,結(jié)合MEAN架構(gòu),需要交付

  • api文檔
  • mongoose模型

如何簡化api文檔?

能夠根據(jù)api文檔生成routes和controller部分代碼,并且可逆

留空model和service即可。

如何簡化model操作?

  • scaffold 腳手架,可以快速完成模型相關(guān)crud操作,界面也可以。
  • moa-console 控制臺(tái),在命令行即可測試模型方法等
  • mongoose-cli 隨時(shí)隨地,測試model,融合bluebird等promise庫,讓業(yè)務(wù)處理更簡單
  • 可以把model直接打包發(fā)布到npm (TODO)

模型固化成node module的意義

  • 復(fù)用,多系統(tǒng)共享model
  • 可以通過xxx@1.0類似的版本,在npm里進(jìn)行版本限定
  • 耦合低
  • 測試容易
  • 新人培訓(xùn)容易

mongoose-cli

上面是對(duì)于業(yè)務(wù)建模的思考,那么我們?nèi)绾慰焖俚倪M(jìn)行建模,又能不和現(xiàn)有代碼耦合呢?

之前說過,業(yè)務(wù)邏輯,基本就是model + 流程控制,能否直接都集成到一起?

mongoose-cli主要解決的就是這個(gè)問題

mongoose best practice

  • mongoose + mongoosedao
  • bluebird

Install

[sudo] npm install -g mongoose-cli

Usage

第一步:使用mongoose命令來初始化測試目錄結(jié)構(gòu)

? 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

第二步: 執(zhí)行mc命令,在moa-console中測試

? mongoose-console mc 提醒:debug狀態(tài)連接數(shù)據(jù)庫: 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狀態(tài)連接數(shù)據(jù)庫: 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%

全文完

歡迎關(guān)注我的公眾號(hào)【node全棧】

轉(zhuǎn)載于:https://my.oschina.net/nodeonly/blog/489077

總結(jié)

以上是生活随笔為你收集整理的nodejs mongoose建模实践的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。