成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

nodejs如何簡潔優(yōu)雅的訪問mysql數(shù)據(jù)庫

jlanglang / 1953人閱讀

摘要:如何簡潔優(yōu)雅的訪問數(shù)據(jù)庫一前言誕生以來出現(xiàn)了一大批的框架如等等,前端可以不再依賴后端可以自己控制服務(wù)端的邏輯。今天我們就來說說前端在中如何操作數(shù)據(jù)庫。

nodejs如何簡潔優(yōu)雅的訪問mysql數(shù)據(jù)庫
一、前言
nodejs誕生以來出現(xiàn)了一大批的web框架如express koa2 egg等等,前端可以不再依賴后端可以自己控制服務(wù)端的邏輯。今天我們就來說說前端在nodejs中如何操作mysql數(shù)據(jù)庫。
二、操作數(shù)據(jù)庫
直接使用mysqljs,比如查詢一個(gè)字段,代碼邏輯看起來是很清晰的,但是僅查詢一個(gè)字段就需要這么多代碼實(shí)在是過于麻煩:
一些框架都提供了一些自己的接口去簡化CRUD操作,比如egg中提供了egg-mysql:
簡單查詢條件場景可以解決,但是我們的真實(shí)場景的查詢條件中各種表關(guān)聯(lián)、各種字段like、in、findinset拼接條件、各種子查詢等等操作都滿足不了,必須要自己寫SQL文。
例如自己寫SQL去實(shí)現(xiàn)一個(gè)服務(wù)端分頁,實(shí)現(xiàn)起來也是比較麻煩的:
那有沒有更簡潔的方法去操作數(shù)據(jù)庫呢,答案是肯定的社區(qū)有很多優(yōu)秀的orm或sql builder的類庫比如objection、sequelize、knexjs、squel等。
三、工具介紹
但在這里要向大家介紹一我們自己的內(nèi)部的一個(gè)更加簡潔易用的的nodejs操作mysql的工具類庫 ali-mysql-client 它是一個(gè)sql builder思路的實(shí)現(xiàn)的工具,無需你額外再去定義數(shù)據(jù)模型更加輕量簡潔。
先看一個(gè)查詢示例,是不是看起來簡潔易懂:
下面介紹下它的一些特點(diǎn):

SQL Builder能力

提供了select insert update delete的強(qiáng)大的SQL Builder能力

豐富的Command

提供了豐富的數(shù)據(jù)庫command更方便的訪問數(shù)據(jù)庫

條件封裝拓展

這里的第三個(gè)參數(shù)operator就是我們封裝的條件邏輯,可傳入字符串或函數(shù),不傳時(shí)默認(rèn)是equal,
在類庫中內(nèi)置了以下操作符:
eq (equal)
ne (not equal)
in (in)
gt (greater than)
ge (greater than or equal)
lt (less than)
le (less than or equal)
isnull (is null)
isnotnull (is not null)
like (like)
startwith (start with)
endwith (end with)
between (between)
findinset (find_in_set(value, field))
insetfind (find_in_set(field, value))
sql (custom sql)
keywords (keywords query)
支持自己拓展:

動(dòng)態(tài)條件

這個(gè)是我們根據(jù)我們自己的經(jīng)驗(yàn)設(shè)計(jì)的一個(gè)參數(shù),在社區(qū)目前還沒看到過類似的,它的作用主要是用來簡化代碼,也就是當(dāng)滿足xx條件時(shí)則忽略該查詢條件,設(shè)計(jì)的初衷是為了簡化代碼,比如以下代碼是很常見的,界面上有輸入值則查詢,沒有輸入值時(shí)不做為查詢條件
比如界面上有輸入值時(shí)則當(dāng)作查詢條件,這是很常見的
上面的代碼使用ignore時(shí)則可簡化為:
支持傳字符串或傳入函數(shù),傳入字符串則會(huì)匹配到已定義的邏輯,其函數(shù)的形式如下:

事件支持

當(dāng)然我們開發(fā)時(shí)需要查問題看看為什么查詢出來的數(shù)據(jù)不對,所以支持了一些事件,在這些事件中你可以記錄你的sql日志或做一些其它的事件
四、使用示例
在koa框架中完整的使用示例:
├── app
│ ├── controller
│ │ └── home.js
│ ├── router.js
│ └── service
│ ├── bar.js
│ └── foo.js
├── app.js
├── config.js
└── package.json
配置文件config.js
入口文件app.js
路由配置router.js
控制器controller/home.js
服務(wù)service/foo.js
更多示例
demo-egg
demo-koa
demo-express
四、開源地址
ali-mysql-client 已經(jīng)開源到了 github 上,目標(biāo)是為nodejs訪問mysql數(shù)據(jù)庫提供強(qiáng)大流暢的api的工具類庫,希望訪問數(shù)據(jù)庫邏輯都能使用一行代碼完成,讓訪問數(shù)據(jù)庫變得更加簡單優(yōu)雅,大家使用有問題歡迎大家在 github 反饋討論。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/106328.html

相關(guān)文章

  • 使用Ghost搭建個(gè)人博客

    摘要:使用搭建個(gè)人博客作為一個(gè)技術(shù)人員,一般都會(huì)有寫一些博客,分享一些文章咱們做技術(shù)的就是愛分享。下面我就簡單講解一下在系統(tǒng)下如何使用搭建搭建個(gè)人博客網(wǎng)站。 使用Ghost搭建個(gè)人博客 作為一個(gè)技術(shù)人員,一般都會(huì)有寫一些博客,分享一些文章(咱們做技術(shù)的就是愛分享)。因此也誕生了非常多的開源博客系統(tǒng),比如像wordpress也是目前世界最流行,應(yīng)用最廣的一個(gè)天源博客系統(tǒng),有非常多的插件及模版。...

    Developer 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<