中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

node+express框架中連接使用mysql(經驗總結)

最近在學習node.js,做了一個練手項目,使用node.js+express框架,配合MySQL數據庫和前端vue框架開發一個多人文檔編輯系統。

創新互聯專注于中大型企業的成都網站設計、網站制作和網站改版、網站營銷服務,追求商業策劃與數據分析、創意藝術與技術開發的融合,累計客戶數千家,服務滿意度達97%。幫助廣大客戶順利對接上互聯網浪潮,準確優選出符合自己需要的互聯網運用,我們將一直專注成都品牌網站建設和互聯網程序開發,在前進的路上,與客戶一起成長!

node.js環境下express+mysql的服務端項目示例

首先是環境搭建:

node環境下

$ npm install -g express-generator
$ express -e project

進入項目文件根目錄安裝依賴模塊

$ npm install
$ DEBUG=node-blog:* npm start

看看項目目錄都有什么

node+express框架中連接使用mysql(經驗總結)

看看生成的工程目錄里面都有什么,

bin:存放可執行文件

node_modules:存放 package.json 中安裝的模塊,當你在 package.json 添加依賴的模塊并安裝后,存放在這個文件夾下

public:存放 image、css、js 等前端資源文件

routes:存放路由文件

views:存放視圖文件或者說模版文件

app.js:啟動文件,或者說入口文件

package.json:存儲著工程的信息及模塊依賴,當在 dependencies 中添加依賴的模塊時,運行npm install ,npm 會檢查當前目錄下的 package.json,并自動安裝所有指定的模塊

下面開始安裝數據庫,這里我選擇的是mysql。

npm install mysql --save-dev

安裝完畢之后,開始配置數據庫。

//mysql配置文件
mysql = {

    host: "xx.xxx.xx.xxx", //這是數據庫的地址

    user: "xxx", //需要用戶的名字

    password: "xxx", //用戶密碼 ,如果你沒有密碼,直接雙引號就是

    database: "xxx" //數據庫名字

  } //好了,這樣我們就能連接數據庫了

  module.exports = mysql; //用module.exports暴露出這個接口,
mysql連接池配置:

//mysql連接池配置文件
var mysql = require('mysql');
var $dbConfig = require('../config/mysql');//注意改成自己項目中mysql配置文件的路徑

// 使用連接池,避免開太多的線程,提升性能
var pool = mysql.createPool($dbConfig);

/**
 * 對query執行的結果自定義返回JSON結果
 */
function responseDoReturn(res, result, resultJSON) {
  if (typeof result === 'undefined') {
    res.json({
      code: '201',
      msg: 'failed to do'
    });
  } else {
    res.json(result);
  }
};

/**
 * 封裝query之sql帶不占位符func
 */
function query(sql, callback) {
  pool.getConnection(function(err, connection) {
    connection.query(sql, function(err, rows) {
      callback(err, rows);
      //釋放鏈接
      connection.release();
    });
  });
}

/**
 * 封裝query之sql帶占位符func
 */
function queryArgs(sql, args, callback) {
  pool.getConnection(function(err, connection) {
    connection.query(sql, args, function(err, rows) {
      callback(err, rows);
      //釋放鏈接
      connection.release();
    });
  });
}

//exports
module.exports = {
  query: query,
  queryArgs: queryArgs,
  doReturn: responseDoReturn
}

操作數據庫的過程比較靈活,我是使用模塊化的思想,將一張數據表封裝成一個模塊暴露出去,通過該模塊獲取這張表的增刪改查SQL語句。下面貼上示例代碼:

let express = require('express');
let mysql = require('../common/basicConnection');

let qibu_task = {
  index: '',
  value: '',
  list: `SELECT * from qibu_task;`, //列表查詢
  insert(args) {
    qibu_task.index = '';
    qibu_task.value = '';
    args = filter(['id', 'task', 'name', 'created_at'], args)
    for (let key in args) {
      qibu_task.index = `${qibu_task.index}${key},`
      let re = /^[0-9]+.?[0-9]*/;
      if (re.test(args[key])) {
        qibu_task.value = `${qibu_task.value}${args[key]},`
      } else {
        qibu_task.value = `${qibu_task.value}'${args[key]}',`
      }
    }
    qibu_task.index = qibu_task.index.substr(0, qibu_task.index.length - 1);
    qibu_task.value = qibu_task.value.substr(0, qibu_task.value.length - 1);

    return `INSERT INTO qibu_task (${qibu_task.index}) VALUES(${qibu_task.value})`;
  }, //按需增加
  select(index, value) {
    return `SELECT * from qibu_task where ${index}=${value};` //按需查詢
  },
  delete(index, value) {
    return `DELETE from qibu_task where ${index}=${value};` //按需刪除
  },
  update(index, args) { //提交修改
    if (index in args) {
      qibu_task.value = '';
      args = filter(['id', 'task', 'name', 'created_at'], args)
      for (let key in args) {
        let re = /^[0-9]+.?[0-9]*/;
        if (re.test(args[key])) {
          qibu_task.value = `${qibu_task.value}${key}=${args[key]},`
        } else {
          qibu_task.value = `${qibu_task.value}${key}='${args[key]}',`
        }
      }
      qibu_task.value = qibu_task.value.substr(0, qibu_task.value.length - 1)
      return `UPDATE qibu_task SET ${qibu_task.value} WHERE ${index}=${args[index]};`
    }
  },
};
//參數過濾
function filter(arguments, obj) {
  let newObj = {}
  arguments.forEach(every => {
    if (every in obj) {
      newObj[every] = obj[every]
    }
  });
  return newObj;
};
module.exports = qibu_task;

然后就可以在路由返回時進行數據庫操作啦。具體代碼就不貼啦。路由可以識別get、post方法,修改和刪除通過傳遞參數模擬。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創新互聯。

分享名稱:node+express框架中連接使用mysql(經驗總結)
文章源于:http://m.2m8n56k.cn/article2/ipjjic.html

成都網站建設公司_創新互聯,為您提供企業網站制作做網站網站內鏈App設計電子商務外貿建站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站優化排名
主站蜘蛛池模板: 成人做爰在线视频 | 成人三级在线播放线观看 | 亚洲在线视频免费观看 | 久久综合丁香 | 国产一区二区三区日韩 | 国产欧美一区二区三区免费看 | 中文字幕精品一区二区精品 | 精品玖玖玖视频在线观看 | 欧美亚洲国产日韩一区二区三区 | 一级看片免费视频 | 国产亚洲高清在线精品99 | 色多多最新地址福利地址 | 米奇久久 | 青青影院一区二区免费视频 | 97国内免费久久久久久久久久 | 精品成人免费一区二区在线播放 | chinese多姿势videos| 欧美粗又大gay69视频 | 国产一区二区fc2ppv在线播放 | 麻豆19禁国产青草精品 | 亚洲精品成人久久 | 欧美福利一区二区三区 | 国产美女拍拍拍在线观看 | 国产自线一二三四2021 | 久久亚洲国产精品五月天 | 欧美一级一极性活片免费观看 | 日本特级淫片免费 | 欧美一区二区视频 | 国产黄色三级网站 | 精品日韩在线视频一区二区三区 | 免费在线观看的毛片 | 亚洲国产成人久久一区www | 国产欧美日韩在线观看一区二区三区 | 亚洲第一男人天堂 | 国内成人精品亚洲日本语音 | 欧美成人精品不卡视频在线观看 | 色视频www在线播放国产人成 | 成年女人免费观看 | 一区二区三区免费观看 | 国产欧美在线一区二区三区 | 三级亚洲 |