最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

node+express框架中連接使用mysql(經(jīng)驗(yàn)總結(jié))

 更新時(shí)間:2018年11月10日 10:23:47   作者:清風(fēng)過山崗  
這篇文章主要介紹了node+express框架中連接使用mysql(經(jīng)驗(yàn)總結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

最近在學(xué)習(xí)node.js,做了一個(gè)練手項(xiàng)目,使用node.js+express框架,配合mysql數(shù)據(jù)庫和前端vue框架開發(fā)一個(gè)多人文檔編輯系統(tǒng)。

node.js環(huán)境下express+mysql的服務(wù)端項(xiàng)目示例

首先是環(huán)境搭建:

node環(huán)境下

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

進(jìn)入項(xiàng)目文件根目錄安裝依賴模塊

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

看看項(xiàng)目目錄都有什么

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

bin:存放可執(zhí)行文件

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

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

routes:存放路由文件

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

app.js:啟動(dòng)文件,或者說入口文件

package.json:存儲(chǔ)著工程的信息及模塊依賴,當(dāng)在 dependencies 中添加依賴的模塊時(shí),運(yùn)行npm install ,npm 會(huì)檢查當(dāng)前目錄下的 package.json,并自動(dòng)安裝所有指定的模塊

下面開始安裝數(shù)據(jù)庫,這里我選擇的是mysql。

npm install mysql --save-dev

安裝完畢之后,開始配置數(shù)據(jù)庫。

//mysql配置文件
mysql = {

    host: "xx.xxx.xx.xxx", //這是數(shù)據(jù)庫的地址

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

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

    database: "xxx" //數(shù)據(jù)庫名字

  } //好了,這樣我們就能連接數(shù)據(jù)庫了

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

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

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

/**
 * 對(duì)query執(zhí)行的結(jié)果自定義返回JSON結(jié)果
 */
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
}

操作數(shù)據(jù)庫的過程比較靈活,我是使用模塊化的思想,將一張數(shù)據(jù)表封裝成一個(gè)模塊暴露出去,通過該模塊獲取這張表的增刪改查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]};`
    }
  },
};
//參數(shù)過濾
function filter(arguments, obj) {
  let newObj = {}
  arguments.forEach(every => {
    if (every in obj) {
      newObj[every] = obj[every]
    }
  });
  return newObj;
};
module.exports = qibu_task;

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

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用nodejs解析json數(shù)據(jù)

    使用nodejs解析json數(shù)據(jù)

    這篇文章主要介紹了使用nodejs解析json數(shù)據(jù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • node.js中g(shù)runt和gulp的區(qū)別詳解

    node.js中g(shù)runt和gulp的區(qū)別詳解

    這篇文章主要介紹了node.js中g(shù)runt和gulp的區(qū)別詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • node.js基于mongodb的搜索分頁示例

    node.js基于mongodb的搜索分頁示例

    本篇文章主要介紹了node.js基于mongodb的搜索分頁示例,mongodb分頁很簡單,這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。
    2017-01-01
  • node.js卸載并重新安裝的方法步驟

    node.js卸載并重新安裝的方法步驟

    本文詳細(xì)介紹了Node.js的卸載和重新安裝步驟,包括進(jìn)入控制面板卸載程序,手動(dòng)刪除文件夾,清理環(huán)境變量,以及如何重新下載并安裝Node.js,提供了詳細(xì)的操作指導(dǎo)和安裝Node.js的官方下載地址,確保用戶能夠順利完成Node.js的更新或重裝過程,感興趣的可以了解一下
    2024-11-11
  • Node.js返回JSONP詳解

    Node.js返回JSONP詳解

    下面小編就為大家?guī)硪黄狽ode.js返回JSONP詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-05-05
  • node.js安裝超詳細(xì)步驟教程(推薦!)

    node.js安裝超詳細(xì)步驟教程(推薦!)

    其實(shí)Node.js就是運(yùn)行在服務(wù)端的JavaScript,Node.js是一個(gè)基于Chrome?JavaScript運(yùn)行時(shí)建立的一個(gè)平臺(tái),下面這篇文章主要給大家介紹了關(guān)于node.js安裝超詳細(xì)步驟教程的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • 如何讓node運(yùn)行es6模塊文件及其原理詳解

    如何讓node運(yùn)行es6模塊文件及其原理詳解

    這篇文章主要介紹了如何讓node運(yùn)行es6模塊文件及其原理詳解,詳細(xì)的介紹了2種方式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • node_modules文件夾刪除失敗的有效解決辦法

    node_modules文件夾刪除失敗的有效解決辦法

    在前端開發(fā)過程中,node_modules文件夾是一個(gè)必不可少的組成部分,里面存放著項(xiàng)目所需的各種依賴包,在實(shí)際操作中,很多開發(fā)者可能會(huì)遇到刪除 node_modules 文件夾失敗的問題,本文將詳細(xì)介紹一種簡單有效的解決辦法,幫助你順利刪除node_modules文件夾,需要的朋友可以參考下
    2024-12-12
  • Node.js中path模塊操作路徑的基本使用

    Node.js中path模塊操作路徑的基本使用

    這篇文章主要介紹了Node.js中path模塊操作路徑的基本使用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • nodejs初始化init的示例代碼

    nodejs初始化init的示例代碼

    今天小編就為大家分享一篇nodejs初始化init的示例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10

最新評(píng)論

无极县| 蓝田县| 保靖县| 黄大仙区| 凤翔县| 扶余县| 南昌县| 榕江县| 永德县| 盐津县| 仁怀市| 桐柏县| 余江县| 三穗县| 三门县| 都昌县| 平利县| 营山县| 洪湖市| 双江| 福海县| 金阳县| 广丰县| 桦川县| 沁水县| 沅陵县| 临漳县| 吉首市| 延长县| 聊城市| 平遥县| 诸城市| 娱乐| 赣州市| 嵩明县| 江华| 资源县| 高陵县| 襄垣县| 泗洪县| 汕尾市|