摘要:初始化項(xiàng)目創(chuàng)建項(xiàng)目目錄,并使用初始化項(xiàng)目后,執(zhí)行下面操作安裝依賴創(chuàng)建填寫你的填寫你的用戶名填寫你的密碼在中執(zhí)行,當(dāng)看到中打印出,表明數(shù)據(jù)庫(kù)連接成功。打開瀏覽器訪問(wèn),當(dāng)看到屏幕顯示時(shí),表名項(xiàng)目初始化成功。
本文是一篇使用mysql這個(gè)npm模塊操作MySQL數(shù)據(jù)庫(kù)的基礎(chǔ)教程。 不涉及MySQL的安裝和配置,如果電腦中還未安裝MySQL, 推薦安裝WAMP、XAMPP等集成環(huán)境。本文中還使用到了輕量級(jí)的Node.js框架Koa搭建web程序,為的是通過(guò)前端瀏覽器請(qǐng)求的方式來(lái)模擬項(xiàng)目場(chǎng)景,你無(wú)需掌握Koa框架的語(yǔ)法也是可以輕松閱讀本文的。
初始化項(xiàng)目創(chuàng)建項(xiàng)目目錄,并使用npm init初始化項(xiàng)目后,執(zhí)行下面操作:
安裝依賴npm install mysql koa koa-router創(chuàng)建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中執(zhí)行node index.js,當(dāng)看到shell中打印出mysql connected success!,表明MySQL數(shù)據(jù)庫(kù)連接成功。
打開瀏覽器, 訪問(wèn)localhost:3000,當(dāng)看到屏幕顯示Visit index時(shí),表名項(xiàng)目初始化成功。
當(dāng)訪問(wèn)/createdb時(shí),創(chuàng)建一個(gè)mysqlkoa的數(shù)據(jù)庫(kù),代碼如下:
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(); }); }) })
重新執(zhí)行node index.js,并使用瀏覽器訪問(wèn)localhost:3000/createdb
創(chuàng)建數(shù)據(jù)表為了方便,我們直接在連接時(shí)使用剛才創(chuàng)建的數(shù)據(jù)庫(kù),需要在mysql.createConnection中添加database:mysqlkoa的配置項(xiàng)。
const connection = mysql.createConnection({ host: "localhost", user: "root", password: "123456", database: "mysqlkoa" // 添加該列 })
當(dāng)訪問(wèn)/createtable時(shí),我們創(chuàng)建一個(gè)數(shù)據(jù)表fe_frame,該表用來(lái)保存前端框架的數(shù)據(jù):
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(); }) }) })
重新執(zhí)行node index.js,并使用瀏覽器訪問(wèn)localhost:3000/createtable
插入數(shù)據(jù)當(dāng)訪問(wèn)/insert時(shí),用來(lái)插入單條數(shù)據(jù):
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(); }) }) })
重新執(zhí)行node index.js,并使用瀏覽器訪問(wèn)localhost:3000/insert
插入多條數(shù)據(jù)當(dāng)訪問(wèn)/insertmulti時(shí),用來(lái)插入多條數(shù)據(jù):
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(); }) }) })
重新執(zhí)行node index.js,并使用瀏覽器訪問(wèn)localhost:3000/insertmulti
使用phpMyAdmin訪問(wèn),可以看到此時(shí)mysqlkoa表如下
刪除數(shù)據(jù)當(dāng)訪問(wèn)/delete時(shí),刪除相應(yīng)行。我們使用請(qǐng)求參數(shù)name來(lái)指定刪除哪個(gè)框架,在服務(wù)器端使用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(); }) }) })
重新執(zhí)行node index.js,并使用瀏覽器訪問(wèn)http://localhost:3000/delete?name=jQuery
修改數(shù)據(jù)當(dāng)訪問(wèn)/update時(shí),更新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(); }) }) })
重新執(zhí)行node index.js,并使用瀏覽器訪問(wèn)http://localhost:3000/update
查找數(shù)據(jù)當(dāng)訪問(wèn)/select時(shí),獲取滿足請(qǐng)求參數(shù)中框架名條件的項(xiàng),代碼如下:
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(); }) }) })
重新執(zhí)行node index.js,并使用瀏覽器訪問(wèn)http://localhost:3000/select?name=vue
mysql文檔地址: https://www.npmjs.com/package...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/98792.html
摘要:其中用來(lái)完成請(qǐng)求,將添加的原型上后就不需要再在每個(gè)需要使用它的頁(yè)面引入了每個(gè)頁(yè)面都相當(dāng)于一個(gè)組件,文件以結(jié)尾,第一次啟動(dòng)成功時(shí)看到的頁(yè)面就是組件,路徑。 學(xué)習(xí)筆記...在線地址:cl8023.com github 數(shù)據(jù)庫(kù)已改為mongodb 快速搭建 node 后端服務(wù)Github-quick-node-server 準(zhǔn)備工作 安裝node,這是必須的 新版node自帶npm...
摘要:迅速發(fā)展,目前最熱的構(gòu)建框架非莫屬,在上有的就可以證明。下面就以為中心構(gòu)建一個(gè)前后端都包含在內(nèi)的簡(jiǎn)單吧。簡(jiǎn)單的能讓你迅速地了解到工作流程。創(chuàng)建并初始化項(xiàng)目首先,進(jìn)入到你的工作目錄新建一個(gè)項(xiàng)目目錄并打開通過(guò)命令為你的項(xiàng)目創(chuàng)建一個(gè)文件。 Nodejs迅速發(fā)展,目前最熱的Nodejs構(gòu)建框架非express莫屬,在Github上有32k的star就可以證明。下面就以Nodejs為中心構(gòu)建一個(gè)...
閱讀 2423·2021-08-18 10:21
閱讀 2531·2019-08-30 13:45
閱讀 2161·2019-08-30 13:16
閱讀 2126·2019-08-30 12:52
閱讀 1372·2019-08-30 11:20
閱讀 2631·2019-08-29 13:47
閱讀 1629·2019-08-29 11:22
閱讀 2769·2019-08-26 12:11