摘要:如何簡潔優雅的訪問數據庫一前言誕生以來出現了一大批的框架如等等,前端可以不再依賴后端可以自己控制服務端的邏輯。今天我們就來說說前端在中如何操作數據庫。
nodejs如何簡潔優雅的訪問mysql數據庫
一、前言
nodejs誕生以來出現了一大批的web框架如express koa2 egg等等,前端可以不再依賴后端可以自己控制服務端的邏輯。今天我們就來說說前端在nodejs中如何操作mysql數據庫。
二、操作數據庫
直接使用mysqljs,比如查詢一個字段,代碼邏輯看起來是很清晰的,但是僅查詢一個字段就需要這么多代碼實在是過于麻煩:
一些框架都提供了一些自己的接口去簡化CRUD操作,比如egg中提供了egg-mysql:
簡單查詢條件場景可以解決,但是我們的真實場景的查詢條件中各種表關聯、各種字段like、in、findinset拼接條件、各種子查詢等等操作都滿足不了,必須要自己寫SQL文。
例如自己寫SQL去實現一個服務端分頁,實現起來也是比較麻煩的:
那有沒有更簡潔的方法去操作數據庫呢,答案是肯定的社區有很多優秀的orm或sql builder的類庫比如objection、sequelize、knexjs、squel等。
三、工具介紹
但在這里要向大家介紹一我們自己的內部的一個更加簡潔易用的的nodejs操作mysql的工具類庫 ali-mysql-client 它是一個sql builder思路的實現的工具,無需你額外再去定義數據模型更加輕量簡潔。
先看一個查詢示例,是不是看起來簡潔易懂:
下面介紹下它的一些特點:
SQL Builder能力
提供了select insert update delete的強大的SQL Builder能力
豐富的Command
提供了豐富的數據庫command更方便的訪問數據庫
條件封裝拓展
這里的第三個參數operator就是我們封裝的條件邏輯,可傳入字符串或函數,不傳時默認是equal,
在類庫中內置了以下操作符:
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)
支持自己拓展:
動態條件
這個是我們根據我們自己的經驗設計的一個參數,在社區目前還沒看到過類似的,它的作用主要是用來簡化代碼,也就是當滿足xx條件時則忽略該查詢條件,設計的初衷是為了簡化代碼,比如以下代碼是很常見的,界面上有輸入值則查詢,沒有輸入值時不做為查詢條件
比如界面上有輸入值時則當作查詢條件,這是很常見的
上面的代碼使用ignore時則可簡化為:
支持傳字符串或傳入函數,傳入字符串則會匹配到已定義的邏輯,其函數的形式如下:
事件支持
當然我們開發時需要查問題看看為什么查詢出來的數據不對,所以支持了一些事件,在這些事件中你可以記錄你的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
服務service/foo.js
更多示例
demo-egg
demo-koa
demo-express
四、開源地址
ali-mysql-client 已經開源到了 github 上,目標是為nodejs訪問mysql數據庫提供強大流暢的api的工具類庫,希望訪問數據庫邏輯都能使用一行代碼完成,讓訪問數據庫變得更加簡單優雅,大家使用有問題歡迎大家在 github 反饋討論。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/106328.html
摘要:使用搭建個人博客作為一個技術人員,一般都會有寫一些博客,分享一些文章咱們做技術的就是愛分享。下面我就簡單講解一下在系統下如何使用搭建搭建個人博客網站。 使用Ghost搭建個人博客 作為一個技術人員,一般都會有寫一些博客,分享一些文章(咱們做技術的就是愛分享)。因此也誕生了非常多的開源博客系統,比如像wordpress也是目前世界最流行,應用最廣的一個天源博客系統,有非常多的插件及模版。...
閱讀 641·2021-09-22 10:02
閱讀 6374·2021-09-03 10:49
閱讀 568·2021-09-02 09:47
閱讀 2153·2019-08-30 15:53
閱讀 2931·2019-08-30 15:44
閱讀 902·2019-08-30 13:20
閱讀 1815·2019-08-29 16:32
閱讀 892·2019-08-29 12:46