1.在node.js中安装mysql模块,复制粘贴11文件夹,重命名为13,13文件夹上右键,在终端中打开
输入npm i mysql
,在13文件夹下面多了一个node_modules
文件夹,同时弹出了一些黄色的警告信息(暂时忽略)
2.引入mysql模块,打开server.js,在http.createServer
前面添加下列代码
//引入mysql
var mysql = require('mysql')
//创建连接
var connection = mysql.createConnection({
host: 'localhost',//连接到本机mysql
user: 'root',//用户名
password: '123456',//密码
database: 'test'//数据库
})
//执行连接方法,如果出现连接错误则输出错误信息
connection.connect(function (err) {
if (err) console.log(err)
})
3.把else if (router && !ext) {...}
的大括号中代码块替换成
connection.query('SELECT * from users', function (err, results) {
res.writeHead(200, { 'Content-Type': 'application/json;charset=UTF8' })
res.write(results)
res.end()
});
4.在终端中node server
,浏览器地址改为http://127.0.0.1:8080/xxx(xxx可以替换成不带".扩展名"的连接),浏览器其中显示从test数据库的users数据表获取的所有数据。
5.对else if (router && !ext) {...}
的大括号中代码块进行优化,替换成Get
函数
var table = router.split('/')[1]//访问的数据表
var query = urls.query//访问的参数
Get(table, query, function (err, data) {
res.writeHead(200, { 'Content-Type': 'application/json;charset=UTF8' })
res.write(data)
res.end()
})
6.在function mime(ext) {...}
后面定义Get函数
function Get(table, query, fn) {
var where = ' where 1=1 '
for (var item in query) {
where = where + ' and ' + item + ' = ' + query[item]
}
connection.query('SELECT * from ' + table + where, function (err, results) {
if (err) {
fn(err, '查询数据错误')
} else {
fn(false, results.length == 0 ? '没有查询到数据' : JSON.stringify(results))
}
});
}
6.完整的server.js
var http = require('http')
var fs = require('fs')
var url = require('url')
var mysql = require('mysql')
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '123456',
database: 'test'
})
connection.connect(function (err) {
if (err) console.log(err)
});
http.createServer(function (req, res) {
var urls = url.parse(req.url, true)
var pathname = urls.pathname
if (pathname == '/') pathname = '/index.html'
var router = pathname.split('.')[0]
var ext = pathname.split('.')[1]
if (router && ext) {
fs.readFile('./static' + pathname, function (err, data) {
if (err) {
if (ext == 'html') {
fs.readFile('./static/404.html', function (err, data) {
res.writeHead(200, { 'Content-Type': 'text/html' })
res.write(data)
res.end()
})
} else {
res.end()
}
return
}
res.writeHead(200, { 'Content-Type': mime(ext) })
res.write(data)
res.end()
})
} else if (router && !ext) {
var table = router.split('/')[1]
var query = urls.query
Get(table, query, function (err, data) {
res.writeHead(200, { 'Content-Type': 'text/plain;charset=UTF8' })//application/json
res.write(data)
res.end()
})
}
}).listen(8080)
console.log('run http://127.0.0.1:8080')
function mime(ext) {
if (ext == 'html') {
ext = 'text/html'
} else if (ext == 'css') {
ext = 'text/css'
} else if (ext == 'js') {
ext = 'application/x-javascript'
} else if (ext == 'json') {
ext = 'application/json'
} else if (ext == 'txt') {
ext = 'text/plain'
} else if (ext == 'jpg') {
ext = 'image/jpeg'
} else if (ext == 'png') {
ext = 'image/png'
} else if (ext == 'gif') {
ext = 'image/gif'
} else {
ext = 'text/html'
}
return ext
}
function Get(table, query, fn) {
var where = ' where 1=1 '
for (var item in query) {
where = where + ' and ' + item + ' = ' + query[item]
}
connection.query('SELECT * from ' + table + where, function (err, results) {
if (err) {
fn(err, '查询数据错误')
} else {
fn(false, results.length == 0 ? '没有查询到数据' : JSON.stringify(results))
}
});
}
最终效果