本文是一篇使用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資料庫連線成功。
開啟瀏覽器, 訪問localhost:3000,當看到螢幕顯示Visit index時,表名專案初始化成功。
資料庫操作
建立資料庫
當訪問/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
建立資料表
為了方便,我們直接在連線時使用剛才建立的資料庫,需要在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
插入資料
插入單條資料
當訪問/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
插入多條資料
當訪問/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
使用phpMyAdmin訪問,可以看到此時mysqlkoa表如下
刪除資料
當訪問/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
修改資料
當訪問/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
查詢資料
當訪問/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
給大家推薦一個免費的學習群,裡面概括移動應用網站開發,css,html,webpack,vue node angular以及面試資源等。 對web開發技術感興趣的同學,歡迎加入Q群:864305860,不管你是小白還是大牛我都歡迎,還有大牛整理的一套高效率學習路線和教程與您免費分享,同時每天更新視訊資料。 最後,祝大家早日學有所成,拿到滿意offer,快速升職加薪,走上人生巔峰。