NodeJs對Mysql封裝


  

之前在學習NodeJs的時候,每次操作數據庫都需要連接數據庫然后開始寫Sql操作,這樣非常麻煩,然后自己對Mysql進行了封裝,一共100多行代碼。

github地址: Mysql操作

我在里面對Mysql基本操作--增刪改查進行了封裝,在處理NodeJs的異步回調時使用了原型擴展、Promise規范的Q,我覺得Q的設計容易理解,便於使用。

因為大部分的查詢需要返回數據,所以根據數據庫表中字段設置相同的字段,下面會介紹,而修改、刪除、增加數據都只需要返回是否成功,所以會返回0/1作為判斷。

調用方式

首先創建一個Js文件main.js,我使用的是Node Express web框架,這樣在處理前端靜態資源和get/post請求時非常輕松,以后有興趣可以自己寫一個web框架。

創建數據庫Article,字段articleId,articleName,date。然后我們會查詢articleId和articleName。

 

var express = require("express");
var app = express();
var Mysql = require("./Mysql/Mysql2");

app.get("/Query",function(request,response){
    var query = "select * from Article";
    var mysql = new Mysql.createMysql({
        database:"blog",             //設置數據庫名
        response:response,
        query:query,
        config:["articleId","articleName"]   //配置需要顯示在前端的字段
    });
    mysql.Query();
});

var server = app.listen(9090,function(){
    var host = server.address().address;
    var port = server.address().port;
    console.log("應用實例,訪問地址為 http://%s:%s", host, port)
});

  

 

當我們啟動了服務器之后,在頁面上輸入http://localhost:9090/Query,就可以得到我們需要的數據。

{"total":3,"result":[{"articleId":6,"articleName":"2015總結","date":"2016-1-14","categoryId":9},{"articleId":8,"articleName":"數據庫","date":"2016-1-15","categoryId":6},{"articleId":9,"articleName":"linux基礎","date":"2016-1-15","categoryId":6}]}
  total:查詢出的數據總量。
  result:數組中包括很多條數據,一般遍歷數組進行操作。

上面是沒有參數的查詢,也就是不需要傳遞參數,當然,我封裝的Mysql是可以傳遞參數的,下面是整個從頁面傳遞參數到取出數據的過程。

例如例子中,我需要根據Id查詢出articleId=6時articleName時,需要從前端取到Id值,然后根據$.getJSON("/Query",{articleId:6},function(data){console.log(data)});發送ajax請求。

var express = require("express");
var app = express();
var Mysql = require("./Mysql/Mysql2");

app.get("/Query",function(request,response){
    var query = "select * from Article where articleId=?";
    var param = request.query;
    var mysql = new Mysql.createMysql({
        database:"blog",
        response:response,
        query:query,
        param:[param.articleId],    //配置參數
        config:["articleId","articleName","date","categoryId"]
    });
    mysql.Query();
});

var server = app.listen(9090,function(){
    var host = server.address().address;
    var port = server.address().port;
    console.log("應用實例,訪問地址為 http://%s:%s", host, port)
});

  就這樣可以取到數據。

{"total":1,"result":[{"articleId":6,"articleName":"2015總結","date":"2016-1-14","categoryId":9}]}

總結

在學習技術的過程中,越發覺得代碼就是要為我們帶來方便,我們不想寫重復的代碼,那就把它封裝起來吧,有很多人在問要不要重復造輪子的問題,我覺得這個問題因人而異,我個人非常喜歡造輪子,如果是簡單的東西,都自己封裝,如果是要用大的框架,就去學習別人的框架,看看別人的源碼,我曾經承諾過不許別人說我Jquery基礎差,以后一定會去研究它的源碼,不過目前優先級不高,當我水平達到一個層次后,自然會想突破自己,就會去看別人的框架源碼提升框架水平,現在還是打好基礎,認真走好每一步,這樣才能茁壯成長。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM