数据库建库原则
1.那个人 在那个时间 做了什么事
{
userid:,
createtime:,
status:
}
1.连接数据库
//page.json文件
{
"name": "code",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"md5-node": "^1.0.1",
"mysql": "^2.17.1"
}
}
//app.js
const http = require("http");
const mysql = require("mysql");
const md5 = require("md5-node");
const conn = mysql.createConnection({
host: "localhost",
port: "3306",
user: "root",
password: "root",
database: "user"
});
// conn.query("select 1+1 as status", (error, results, filds) => {
// if (error) {
// console.log("连接失败", error);
// } else {
// console.log("成功", results);
// }
// });
// 增加数据
let username = "admin";
let password = md5(123456);
let sql = `insert into admin (user,password) values('${username}','${password}')`;
conn.query(sql,(err,data)=>{
if(err){
console.log('shibai',err)
}else{
console.log('chenggogn',data)
}
})
2.数据库进阶
//page.json
{
"name": "code1",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"md5-node": "^1.0.1",
"multiparty": "^4.2.1",
"mysql": "^2.17.1"
},
"devDependencies": {
"co-mysql": "^1.0.0"
}
}
//app.js
const http=require('http');
const mysql=require('mysql');
const md5=require('md5-node');
const multiparty=require('multiparty');
const fs =require('fs');
let app=http.createServer((req,res)=>{
if(req.url=='/regeister'){
let post={};
// jie shou formdata
let form=new multiparty.Form()
// fen pian duan
form.parse(req)
form.on('field',(name,value)=>{
post[name]=value
})
form.on('close',()=>{
// console.log(post)
let coon=mysql.createConnection({
host:'localhost',
user:'root',
password:'root',
database:'user'
})
coon.query('select 1+1 as status',(err,data)=>{
if(err){
res.write(JSON.stringify({'message':err}))
res.end()
}else if(post['username'].length>6){
res.write(JSON.stringify({'message':'yong hu ming chao guo 6 wei'}))
res.end()
}else{
coon.query(`select user from admin where user = "${post['username']}"`,(err,data)=>{
if(err){
res.write(JSON.stringify({'message':err}))
res.end()
}else if(data.length>0){
res.write(JSON.stringify({message:'yong hu ming yi jing chun zai'}))
res.end()
}else {
post.password=md5(post.password)
let sql=`insert into admin (user,password) values("${post['username']}","${post['password']}")`
coon.query(sql,(err)=>{
if(err){
res.write(JSON.stringify({'message':err}))
res.end()
}else{
res.write(JSON.stringify({'message':'cheng gong'}));
res.end();
}
})
}
})
}
})
})
}else{
fs.readFile(`view${req.url}`,(err,data)=>{
if(!err){
res.write(data)
}else{
res.writeHead(404);
res.write('this page is not found')
}
// shu ju jie su
res.end()
})
}
}).listen(2019)
//view/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
</style>
</head>
<body>
<form action="http://localhost:2019/regeister" method="POST">
<p>yonghu: <input type="text" name="username"></p>
<p>mima: <input type="text" name="password"></p>
<p> <input type="submit" value="tijiao"></p>
</form>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<script>
$('form').submit(function(){
let fordata=new FormData(this);
// fordata.append('name','zs')
// fordata.append('password','123456')
$.ajax({
url:this.action,
type:this.method,
data:fordata,
dataType:'json',
processData:false,
contentType:false
}).then((res)=>{
console.log(res,'chenggong')
},(err)=>{
console.log(err,'shi bai')
})
return false
})
</script>
</body>
</html>
提交数据拦截
//pack.json
{
"name": "code1",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"md5-node": "^1.0.1",
"multiparty": "^4.2.1",
"mysql": "^2.17.1"
},
"devDependencies": {
"co-mysql": "^1.0.0"
}
}
//app.js
const http=require('http');
const mysql=require('mysql');
const md5=require('md5-node');
const multiparty=require('multiparty');
const co=require('co-mysql');
const url=require('url')
const fs =require('fs');
let db=mysql.createPool({
connectionLimit:10,
host:'localhost',
user:'root',
password:'root',
database:'user'
})
let coon=co(db);
let app=http.createServer(async (req,res)=>{
let { pathname,query}=url.parse(req.url,true)
let { username,password}=query
if(pathname=='/regeister'){
if(!username||!password){
res.write(JSON.stringify({'message':'用户名为空'}))
res.end()
}else if(username.length>7){
res.write(JSON.stringify({'message':'用户名大于7'}))
res.end()
}else{
let data=await coon.query(`select user from admin where user='${username}'`)
if(data.length>0){
res.write(JSON.stringify({'message':'用户名已注册'}))
res.end()
}else{
password=md5(password);
let sql=`insert into admin (user,password) values('${username}','${password}')`
let aa=await coon.query(sql)
console.log(aa)
res.write(JSON.stringify({'message':'成功'}));
res.end()
}
}
}else{
fs.readFile(`view${req.url}`,(err,data)=>{
if(!err){
res.write(data)
}else{
res.writeHead(404);
res.write('this page is not found')
}
// shu ju jie su
res.end()
})
}
}).listen(2019)
//view/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<form action="http://localhost:2019/regeister" method="POST">
<p>yonghu: <input type="text" name="username"></p>
<p>mima: <input type="password" name="password"></p>
<p> <input type="button" value="tijiao" class="regeister"></p>
</form>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<script>
$('.regeister').click(async function(){
let data=await $.ajax({
url:'http://localhost:2019/regeister',
data:{
username:$(':text').val(),
password:$(':password').val()
},
type:'get',
dataType:'json'
})
console.log(data)
return false;
})
</script>
</body>
</html>
小案例
{
"name": "mysql-node",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"http": "0.0.0",
"md5-node": "^1.0.1",
"mysql": "^2.17.1"
}
}
//app.js
const http = require("http");
const mysql = require("mysql");
const md5 = require("md5-node");
const conn = mysql.createConnection({
host: "localhost",
port: "3306",
user: "root",
password: "root",
database: "user"
});
// conn.query("select 1+1 as status",(error,results,filds)=>{
// if(error){
// console.log('链接失败',error)
// }else{
// console.log("成功",results)
// }
// })
http
.createServer((req, res) => {
// console.log(req.method,req.url)
res.setHeader("Access-Control-Allow-Origin", "*"); //可以是地址 域名
//设置允许跨域的域名,*代表允许任意域名跨域
//res.header("Access-Control-Allow-Origin","http://www.zhangpeiyue.com");
//允许的header类型 原生
//res.header("Access-Control-Allow-Headers","content-type");
//跨域允许的请求方式 原生
//res.header("Access-Control-Allow-Methods","DELETE,PUT,POST,GET,OPTIONS");
// res.header('Access-Control-Max-Age',1728000);//预请求缓存20天
// Access-Control-Allow-Credentials: true cookie
// var str = ""; //接收数据用
// var i = 0;
//data有一段数据到达(重复很多次)
// req.on("data", function(data) {
// console.log("第${i++}次接到数据");
// str += data;
// });
//数据全部到达(一次)
req.on("end", function() {
var POST = querystring.parse(str);
console.log(POST);
});
res.end("<h1>Hello world!</h1>");
})
.listen(3000);
//index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<input type="text" placeholder="用户名!"><br>
<input type="text" placeholder="请输入密码!"><br>
<button onclick="submit()">get提交</button>
<button onclick="submit1()">post提交</button>
<script>
let oinput = document.getElementsByTagName('input');
function submit() {
console.log(oinput[0].value)
let xhr = new XMLHttpRequest();
// xhr.withCredentials = true; 浏览器发送cookie
xhr.open('get', 'http://127.0.0.1:3000/?name=' + oinput[0].value, true);
// 如果需要像 html 表单那样 POST 数据,请使用 setRequestHeader() 来添加 http 头。
// xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send(null);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status = 200) {
console.log(xhr.responseText);
}
}
}
}
function submit1(){
console.log(oinput[0].value)
let xhr = new XMLHttpRequest();
// xhr.withCredentials = true; 浏览器发送cookie
xhr.open('post', 'http://127.0.0.1:3000/', true);
// 如果需要像 html 表单那样 POST 数据,请使用 setRequestHeader() 来添加 http 头。
// xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.send("name="+oinput[0].value);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status = 200) {
console.log(xhr.responseText);
}
}
}
}
</script>
</body>
</html>