国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

Tikitoo / 3024人閱讀

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

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

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

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

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

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

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

sql調(diào)用方法直接參考ThinkPHP的api,因此不用自己再從新定義方法名稱

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

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

進(jìn)入正文:
簡介:node-transform-mysql是在node.js場景中使用mysql,根據(jù)傳入的參數(shù)生成相應(yīng)的sql語句。它所做的事情很簡單也很專一,只負(fù)責(zé)生成sql語句,不執(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語句順序來寫

簡單用法
查詢

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:"752636052@qq.com"})
    .insert()

INSERT INTO node_table (name,email) VALUES (`zane`,`752636052@qq.com`)

更新

sql
    .table("node_table")
    .data({name:"zane",email:"752636052@qq.com"})
    .update()

UPDATE node_table SET name=`zane`,email=`752636052@qq.com`

刪除

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

高級(jí)用法
數(shù)據(jù)庫的查詢是最復(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

更多用法請查看詳細(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

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

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

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/94091.html

相關(guān)文章

  • Node_深入淺出Node

    摘要:簡介項(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)無法利用多核錯(cuò)誤會(huì)引起整個(gè)應(yīng)用退出,應(yīng)用的健壯性大量計(jì)算占用導(dǎo)致無法繼續(xù)調(diào)用異步。 NodeJs簡介 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è)庫有著強(qiáng)依賴,正好之前也沒使用過,于是我就想先把徹底了解一下,這樣之后折騰的時(shí)候也少一點(diǎn)阻礙。 本文同步自我得博客:http://www.joeray61.com 最近準(zhǔn)備折騰一下backbone.js,在事先了解了backbone之后,我知道了backbone對(duì)underscore這個(gè)庫有著強(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 異步

    摘要:從最開始的到封裝后的都在試圖解決異步編程過程中的問題。為了讓編程更美好,我們就需要引入來降低異步編程的復(fù)雜性。寫一個(gè)符合規(guī)范并可配合使用的寫一個(gè)符合規(guī)范并可配合使用的理解的工作原理采用回調(diào)函數(shù)來處理異步編程。 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元查看
<