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

資訊專欄INFORMATION COLUMN

node.js對(duì)mysql數(shù)據(jù)庫(kù)封裝庫(kù)node-transform-mysql庫(kù) 鏈?zhǔn)秸{(diào)用、使用簡(jiǎn)單

Tikitoo / 3053人閱讀

摘要:最近我準(zhǔn)備寫一個(gè)這樣的庫(kù),基于前期自己對(duì)的封裝是我使用過的一個(gè)框架,對(duì)它的模型模塊調(diào)用的方式很喜歡因此決定參考其,用實(shí)現(xiàn)一次。

在我自己的平常開發(fā)中很少有見到j(luò)avascript對(duì)sql的封裝比較好的庫(kù)(找了一圈也沒找到、應(yīng)該是暫時(shí)我沒發(fā)現(xiàn)),因此前期的項(xiàng)目中根據(jù)自己的項(xiàng)目情況實(shí)現(xiàn)了一套封裝方法。

最近我準(zhǔn)備寫一個(gè)這樣的庫(kù),基于前期自己對(duì)mysql的封裝(ThinkPHP是我使用過的一個(gè)PHP框架,對(duì)它的模型模塊調(diào)用sql的方式很喜歡) 因此決定參考其API,用javascript實(shí)現(xiàn)一次。

node-transform-mysql想表達(dá)什么

node.js連接mysql的庫(kù)有很多,因此覺得沒必要自己再封裝一個(gè),為了達(dá)到庫(kù)的廣泛使用性,因此此庫(kù)只做生成SQL語(yǔ)句的功能封裝

整個(gè)api采用鏈?zhǔn)秸{(diào)用的方式,這樣能最大化的減少開發(fā)代碼和使用自由度

鏈?zhǔn)秸{(diào)用方法順序內(nèi)部已經(jīng)做了排序,因此可以不按嚴(yán)格的sql語(yǔ)句順序來(lái)使用方法

sql調(diào)用方法直接參考ThinkPHP的api,因此不用自己再?gòu)男露x方法名稱

自由、簡(jiǎn)潔、使用簡(jiǎn)單是它想表達(dá)出來(lái)的

完整的API說明文檔,寫文檔比寫代碼更累,時(shí)間更久,可見開源框架文檔的難能可貴,為它們致敬

進(jìn)入正文:
簡(jiǎn)介:node-transform-mysql是在node.js場(chǎng)景中使用mysql,根據(jù)傳入的參數(shù)生成相應(yīng)的sql語(yǔ)句。它所做的事情很簡(jiǎn)單也很專一,只負(fù)責(zé)生成sql語(yǔ)句,不執(zhí)行任何實(shí)際的增刪改查。你也不用擔(dān)心它的體量,整體代碼300行左右,壓縮之后代碼不足8k。

github地址:https://github.com/wangweiang...

npm地址:https://www.npmjs.com/package...

API文檔地址:https://wangweianger.gitbooks...

安裝:

npm install node-transform-mysql
然后使用一個(gè)支持 CommonJS 或 ES2015 的模塊管理器,例如 webpack:

// 使用 ES6 的轉(zhuǎn)譯器,如 babel
import sql from node-transform-mysql

// 不使用 ES6 的轉(zhuǎn)譯器
var sql = require("node-transform-mysql")
sql調(diào)用方法的順序內(nèi)部已經(jīng)做了排序,因此可以不按嚴(yán)格的sql語(yǔ)句順序來(lái)寫

簡(jiǎn)單用法
查詢

sql
    .table("node_table")
    .where("id=1")
    .select()

SELECT * FROM node_table WHERE id=1


sql
    .table("node_table")
    .field("id,name")
    .where({id:1})
    .select()

SELECT id,name FROM node_table WHERE id=1

插入

sql
    .table("node_table")
    .data({name:"zane",email:"[email protected]"})
    .insert()

INSERT INTO node_table (name,email) VALUES (`zane`,`[email protected]`)

更新

sql
    .table("node_table")
    .data({name:"zane",email:"[email protected]"})
    .update()

UPDATE node_table SET name=`zane`,email=`[email protected]`

刪除

sql
    .table("node_table")
    .where({name:"zane"})
    .delet();
DELETE FROM node_table WHERE name=`zane`

高級(jí)用法
數(shù)據(jù)庫(kù)的查詢是最復(fù)雜的,因此高級(jí)用法主要針對(duì)于查詢

//參數(shù)json多字段
sql
    .table("node_table")
    .where({id:1,name:"zane"})
    .select()

SELECT  * FROM node_table WHERE id=1 AND name=`zane`

//參數(shù)數(shù)組
let data=[
    {id:1,name:"zhangsan",_type:"or"},
    {sex:1,number:3}
]
sql.table("node_table").where(data).select()

SELECT * FROM node_table WHERE (id=1 OR name=`zhangsan` ) AND (sex=1 AND number=3 )

//多字段連接方式
let data=[
    {id:1,name:"zhangsan",_type:"or",_nexttype:"or"},
    {sex:1,number:3,_type:"and"}
]
sql.table("node_table").where(data).select()

SELECT * FROM node_table WHERE (id=1 OR name=`zhangsan`) OR (sex=1 AND number=3)

//表達(dá)式查詢
let data={
    id:{eq:100,egt:10,_type:"or"},
    name:"zhangshan"
}
sql.table("node_table").where(data).select()

SELECT  * FROM node_table WHERE ((id=100) OR (id>=10)) AND name=`zhangshan`

//混合查詢
let data=[{
    id:{eq:100,egt:10,_type:"or"},
    name:"zhangshan",
    _nexttype:"or"
},{
    status:1,
    name:{like:"%zane%"}
}]
sql.table("node_table").where(data).select()

SELECT * FROM node_table WHERE (((id=100) OR (id>=10)) AND name=`zhangshan`) OR (status=1 AND ((name LIKE `%zane%`))) 


//UNION , UNION ALL 組合使用
sql
    .union("SELECT * FROM think_user_1",true)
    .union("SELECT * FROM think_user_2",true)
    .union(["SELECT * FROM think_user_3","SELECT name FROM think_user_4"])
    .union("SELECT * FROM think_user_5",true)
    .select()

得到
(SELECT * FROM think_user_1) UNION ALL  
(SELECT * FROM think_user_2) UNION ALL 
(SELECT * FROM think_user_3) UNION 
(SELECT name FROM think_user_4)  UNION  
(SELECT * FROM think_user_5)

//子查詢
let sqlstring = sql.field("id,name").table("node_table").group("field")
sql.table(sqlstring).group("field").where("id=1").order("status").select()

得到
SELECT * FROM (SELECT id,name FROM node_table GROUP BY field ) WHERE id=1 GROUP BY field ORDER BY status

更多用法請(qǐng)查看詳細(xì)文檔

API文檔地址:https://wangweianger.gitbooks...

項(xiàng)目運(yùn)行

git clone https://github.com/wangweianger/node-transform-mysql.git
npm install

//dve
npm run dve

//product
npm run build

此庫(kù)后期也會(huì)根據(jù)自己的使用不斷的完善,也歡迎您的建議

如果你絕對(duì)對(duì)你有幫助,歡迎給個(gè)star

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

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

相關(guān)文章

  • Node_深入淺出Node

    摘要:簡(jiǎn)介項(xiàng)目命名為就是一個(gè)服務(wù)器單純開發(fā)一個(gè)服務(wù)器的想法,變成構(gòu)建網(wǎng)絡(luò)應(yīng)用的一個(gè)基本框架發(fā)展為一個(gè)強(qiáng)制不共享任何資源的單線程,單進(jìn)程系統(tǒng)。單線程弱點(diǎn)無(wú)法利用多核錯(cuò)誤會(huì)引起整個(gè)應(yīng)用退出,應(yīng)用的健壯性大量計(jì)算占用導(dǎo)致無(wú)法繼續(xù)調(diào)用異步。 NodeJs簡(jiǎn)介 Ryan Dahl項(xiàng)目命名為:web.js 就是一個(gè)Web服務(wù)器.單純開發(fā)一個(gè)Web服務(wù)器的想法,變成構(gòu)建網(wǎng)絡(luò)應(yīng)用的一個(gè)基本框架.Node發(fā)展...

    shinezejian 評(píng)論0 收藏0
  • Underscore源碼解析(一)

    摘要:本文同步自我得博客最近準(zhǔn)備折騰一下,在事先了解了之后,我知道了對(duì)這個(gè)庫(kù)有著強(qiáng)依賴,正好之前也沒使用過,于是我就想先把徹底了解一下,這樣之后折騰的時(shí)候也少一點(diǎn)阻礙。 本文同步自我得博客:http://www.joeray61.com 最近準(zhǔn)備折騰一下backbone.js,在事先了解了backbone之后,我知道了backbone對(duì)underscore這個(gè)庫(kù)有著強(qiáng)依賴,正好undersc...

    neu 評(píng)論0 收藏0
  • Node.js設(shè)計(jì)模式》基于ES2015+的回調(diào)控制流

    摘要:以下展示它是如何工作的函數(shù)使用構(gòu)造函數(shù)創(chuàng)建一個(gè)新的對(duì)象,并立即將其返回給調(diào)用者。在傳遞給構(gòu)造函數(shù)的函數(shù)中,我們確保傳遞給,這是一個(gè)特殊的回調(diào)函數(shù)。 本系列文章為《Node.js Design Patterns Second Edition》的原文翻譯和讀書筆記,在GitHub連載更新,同步翻譯版鏈接。 歡迎關(guān)注我的專欄,之后的博文將在專欄同步: Encounter的掘金專欄 知乎專欄...

    LiuRhoRamen 評(píng)論0 收藏0
  • JavaScript 異步

    摘要:從最開始的到封裝后的都在試圖解決異步編程過程中的問題。為了讓編程更美好,我們就需要引入來(lái)降低異步編程的復(fù)雜性。寫一個(gè)符合規(guī)范并可配合使用的寫一個(gè)符合規(guī)范并可配合使用的理解的工作原理采用回調(diào)函數(shù)來(lái)處理異步編程。 JavaScript怎么使用循環(huán)代替(異步)遞歸 問題描述 在開發(fā)過程中,遇到一個(gè)需求:在系統(tǒng)初始化時(shí)通過http獲取一個(gè)第三方服務(wù)器端的列表,第三方服務(wù)器提供了一個(gè)接口,可通過...

    tuniutech 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Tikitoo

|高級(jí)講師

TA的文章

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