首頁 > web前端 > js教程 > 主體

Node.js中操作MySQL資料庫的基礎教學

不言
發布: 2018-10-29 13:57:39
轉載
2963 人瀏覽過

這篇文章帶給大家的內容是關於Node.js中操作MySQL資料庫的基礎教程,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

本文是一篇使用mysql這個npm模組操作MySQL資料庫的基礎教學。 不涉及MySQL的安裝和配置,如果電腦中還未安裝MySQL, 推薦安裝WAMP、XAMPP等整合環境。本文中也使用到了輕量級的Node.js框架Koa搭建web程序,為的是透過前端瀏覽器請求的方式來模擬專案場景,你無需掌握Koa框架的語法也是可以輕鬆閱讀本文的。

初始化專案

建立專案目錄,並使用npm init初始化專案後,執行下方操作:

安裝相依

npm install mysql koa koa-router
登入後複製

建立index.js

// index.js

const Koa = require('koa');
const Router = require('koa-router');
const mysql = require('mysql');

const app = new Koa();
const router = new Router();

const connection = mysql.createConnection({
  host: 'localhost', // 填写你的mysql host
  user: 'root', // 填写你的mysql用户名
  password: '123456' // 填写你的mysql密码
})

connection.connect(err => {
  if(err) throw err;
  console.log('mysql connncted success!');
})

router.get('/', ctx => {
  ctx.body = 'Visit index';
})
app.use(router.routes());

app.listen(3000);
登入後複製

在shell中執行node index.js,當看到shell中列印出mysql connected success!,表示MySQL資料庫連線成功。

Node.js中操作MySQL資料庫的基礎教學

開啟瀏覽器, 存取localhost:3000,當看到螢幕顯示Visit index時,表名項目初始化成功。

Node.js中操作MySQL資料庫的基礎教學

資料庫操作

建立資料庫

當存取/createdb時,建立一個mysqlkoa的資料庫,程式碼如下:

router.get('/createdb', ctx => {
  return new Promise(resolve => {
    const sql = `CREATE DATABASE mysqlkoa`;

    connection.query(sql, (err) => {
      if (err) throw err;
      ctx.body = {
        code: 200,
        msg: `create database mysqlkoa success!`
      }
      resolve();
    });
  })
})
登入後複製

重新執行node index.js,並使用瀏覽器存取localhost:3000/createdb

<img src="https://img.php.cn//upload/image/332/781/973/1540792367149822.png" title="1540792367149822.png" alt="Node.js中操作MySQL資料庫的基礎教學">

建立資料表

為了方便,我們直接在連線時使用剛才建立的資料庫,需要在mysql.createConnection中加入database:mysqlkoa的設定項目。

const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '123456',
  database: 'mysqlkoa' // 添加该列
})
登入後複製

當存取/createtable時,我們建立一個資料表fe_frame,該表用來保存前端框架的資料:

router.get('/createtable', ctx => {
  return new Promise(resolve => {
    const sql = `CREATE TABLE fe_frame(
      id INT(11) AUTO_INCREMENT PRIMARY KEY,
      name VARCHAR(255),
      author VARCHAR(255)
    )`;
    connection.query(sql, (err ,results, filelds) => {
      if (err) throw err;
      ctx.body = {
        code: 200,
        msg: `create table of fe_frame success!`
      }
      resolve();
    })
  })
})
登入後複製

重新執行node index.js,並使用瀏覽器存取localhost :3000/createtable

<img src="https://img.php.cn//upload/image/332/781/973/1540792367149822.png" title="1540792367149822.png" alt="Node.js中操作MySQL資料庫的基礎教學">

#插入資料

插入單一資料

當存取/insert時,用來插入單一資料:

router.get('/insert', ctx => {
  return new Promise(resolve => {
    const sql = `INSERT INTO fe_frame(name, author)
    VALUES('vue', 'Evan')`;
    connection.query(sql, (err) => {
      if (err) throw err;
      ctx.body = {
        cde: 200,
        msg: `insert data to fe_frame success!`
      }
      resolve();
    })
  })
})
登入後複製

重新執行node index.js,並使用瀏覽器存取localhost:3000/insert

Node.js中操作MySQL資料庫的基礎教學

插入多個資料

當存取/insertmulti時,用來插入多個資料:

router.get('/insertmulti', ctx => {
  return new Promise(resolve => {
    const sql = `INSERT INTO fe_frame(name, author)
    VALUES ?`;
    const values = [
      ['React', 'Facebook'],
      ['Angular', 'Google'],
      ['jQuery', 'John Resig']
    ];
    connection.query(sql, [values], (err, result) => {
      if (err) throw err;
      ctx.body = {
        code: 200,
        msg: `insert ${result.affectedRows} data to fe_frame success!`        
      }
      resolve();
    })
  })
})
登入後複製

重新執行node index.js,並使用瀏覽器訪問localhost:3000/insertmulti

Node.js中操作MySQL資料庫的基礎教學

#使用phpMyAdmin訪問,可以看到此時mysqlkoa表格如下

Node.js中操作MySQL資料庫的基礎教學

#刪除資料

當存取/delete時,刪除對應行。我們使用請求參數name來指定刪除哪個框架,在伺服器端使用ctx.query.name獲取,程式碼如下:

router.get('/delete', ctx => {
  return new Promise(resolve => {
    const name = ctx.query.name;
    const sql = `DELETE FROM fe_frame WHERE name = '${name}'`;
    connection.query(sql, (err, result) => {
      if (err) throw err;
      ctx.body = {
        code: 200,
        msg: `delete ${result.affectedRows} data from fe_frame success!`
      };
      resolve();
    })
  })
})
登入後複製

重新執行node index.js,並使用瀏覽器存取http://localhost: 3000/delete?name=jQuery

Node.js中操作MySQL資料庫的基礎教學

#修改資料

當存取/update時,更新vue框架的作者名為Evan You,程式碼如下:

router.get('/update', ctx => {
  return new Promise(resolve => {
    const sql =  `UPDATE fe_frame SET author = 'Evan You' WHERE NAME = 'vue'`;
    connection.query(sql, (err, result) => {
      if (err) throw err;
      ctx.body = {
        code: 200,
        msg: `update ${result.affectedRows} data from fe_frame success!`
      };
      resolve();
    })
  })
})
登入後複製

重新執行node index.js,並使用瀏覽器存取http://localhost:3000/update

Node.js中操作MySQL資料庫的基礎教學

查找資料

當存取/select時,取得滿足請求參數中框架名條件的項,程式碼如下:

router.get('/select', ctx => {
  return new Promise(resolve => {
    let name = ctx.query.name;
    const sql = `SELECT * FROM fe_frame WHERE name = '${name}'`;
    connection.query(sql, (err, result) => {
      if (err) throw err;
      ctx.body = {
        code: 200,
        data: result
      }
      resolve();
    })
  })
})
登入後複製

重新執行node index.js,並使用瀏覽器存取http://localhost:3000/select?name=vue

Node.js中操作MySQL資料庫的基礎教學

#

以上是Node.js中操作MySQL資料庫的基礎教學的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板