深入出來的Node.js操作MySQL

前端攻城小牛啊發表於2018-10-30

本文是一篇使用mysql這個npm模組操作MySQL資料庫的基礎教程。 不涉及MySQL的安裝和配置,如果電腦中還未安裝MySQL, 推薦安裝WAMP、XAMPP等整合環境。 轉載:segmentfault.com/a/119000001…

`

初始化專案

建立專案目錄,並使用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();
 });
 })
})//歡迎加入全棧開發交流群一起學習交流:864305860
複製程式碼

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

深入出來的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

深入出來的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();
 })
 })
})給大家推薦一個免費的學習群,裡面概括移動應用網站開發,css,html,webpack,vue node angular以及面試資源等。
對web開發技術感興趣的同學,歡迎加入Q群:864305860,不管你是小白還是大牛我都歡迎,還有大牛整理的一套高效率學習路線和教程與您免費分享,同時每天更新視訊資料。
最後,祝大家早日學有所成,拿到滿意offer,快速升職加薪,走上人生巔峰。
複製程式碼

重新執行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();
 })
 })
})//歡迎加入全棧開發交流群一起學習交流:864305860
複製程式碼

重新執行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();
 })
 })
})//歡迎加入全棧開發交流群一起學習交流:864305860
複製程式碼

重新執行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

點選獲取原始碼

給大家推薦一個免費的學習群,裡面概括移動應用網站開發,css,html,webpack,vue node angular以及面試資源等。 對web開發技術感興趣的同學,歡迎加入Q群:864305860,不管你是小白還是大牛我都歡迎,還有大牛整理的一套高效率學習路線和教程與您免費分享,同時每天更新視訊資料。 最後,祝大家早日學有所成,拿到滿意offer,快速升職加薪,走上人生巔峰。

相關文章