国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

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

2019-11-19 12:32:35
字體:
來源:轉載
供稿:網友

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

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

首先是環境搭建:

node環境下

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

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

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

看看項目目錄都有什么

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

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();    });  });}//exportsmodule.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方法,修改和刪除通過傳遞參數模擬。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黑河市| 万盛区| 德安县| 个旧市| 曲阳县| 上高县| 衡东县| 临清市| 察哈| 张家界市| 高碑店市| 荥阳市| 广南县| 全南县| 秭归县| 利川市| 广饶县| 三门县| 营口市| 林周县| 怀化市| 锡林浩特市| 许昌县| 曲松县| 克拉玛依市| 蓝田县| 吉林省| 鸡泽县| 高安市| 惠东县| 龙州县| 基隆市| 柏乡县| 古蔺县| 海口市| 比如县| 肥乡县| 乌兰察布市| 县级市| 滦南县| 高邑县|