要做的准备工作
1.先把express 和mysql依赖包安装好
2.在node.js文件中引入express 和mysql
后端文件server.js
var express = require('express');
var app = express();
var mysql = require('mysql');
var url = require('url');
var bodyParser = require('body-parser');
app.all('*',function(req,res,next){
res.header('Access-Control-Allow-Origin','*');//*表示可以跨域任何域名都行 也可以填域名表示只接受某个域名
res.header('Access-Control-Allow-Headers','X-Requested-With,Content-Type');//可以支持的消息首部列表
res.header('Access-Control-Allow-Methods','PUT,POST,GET,DELETE,OPTIONS');//可以支持的提交方式
res.header('Content-Type','application/json;charset=utf-8');//请求头中定义的类型
next();
});
//url解析 以键值对的形式
app.use(bodyParser.urlencoded({extended:true}));//Context-Type 为application/x-www-form-urlencoded 时 返回的对象是一个键值对,当extended为false的时候,键值对中的值就为'String'或'Array'形式,为true的时候,则可为任何数据类型。
app.use(bodyParser.json());//用于解析json 会自动选择最为适宜的解析方式
var connection = mysql.createConnection({
host : 'ip地址 主机地址 比如localhost',
user : '用户名',
password : '密码',
database : '库名'
});
//如果连接成功 可以查询到数据表的信息
connection.connect();
connection.query('SELECT * FROM table.database',function(error, results, fields){
if(error) throw error;
console.log("结果是:",results);
});
get接口
app.get('/list',function(req,res){
console.log(req.url);
var parseObj = url.parse(req.url, true);
//console.log(parseObj);
var queryObj = parseObj.query;
res.status(200);
console.log('发送过来的信息:');
console.log(queryObj);
//不用语句拼接的方式 使用占位符
var sql = 'SELECT * FROM userlogin.usersignup WHERE actName = ?';
connection.query(sql,[queryObj.actName],function(error, results, fields){
if(error) throw error;
console.log("结果是:",results);
var number = results.length;
var newResult = changeResult(results);
var respJson = {
code:200,
success:true,
number:number,
list:newResult
}
res.json(respJson);
});
});
这个接口中发送过来一个actName的信息 并在表中的catName=发送过来的信息的 结果返回给前端。
post接口
function getNowDate(){
function addZero(num){
var str = '';
if(num>=0 && num<10){
str = '0'+num;
}else{
str = ''+num;
}
return str;
}
var now = new Date();
var returnStr = '';
var year = now.getFullYear();
var month = now.getMonth();
month = addZero(month);
var date = now.getDate();
date = addZero(date);
var hours = now.getHours();
hours = addZero(hours);
var min = now.getMinutes();
min = addZero(min);
returnStr = year+'-'+month+'-'+date+' '+hours+':'+min;
return returnStr;
}
app.post('/sign',function(req,res){
var reqBody = req.body;
var time = getNowDate();//这里有个获取时间的函数 但是是以字符段存储的
reqBody.time = time;
var addSql = 'INSERT INTO usersignup(Id,name,phone,mark,time,actName) VALUES(0,?,?,?,?,?)';
var addSqlParams = [];
addSqlParams[0] = reqBody.name.toString();
addSqlParams[1] = reqBody.phone.toString();
addSqlParams[2] = reqBody.mark.toString();
addSqlParams[3] = reqBody.time;
addSqlParams[4] = reqBody.actName;
connection.query(addSql,addSqlParams,function (err, result) {
if(err){
console.log('[INSERT ERROR] - ',err.message);
res.json('"error":"报名粗错了"');
return;
}
var returnObj = {
code:200,
name:reqBody.name,
time:reqBody.time,
phone:reqBody.phone,
}
res.json(returnObj);
console.log('--------------------------INSERT----------------------------');
console.log('INSERT :',result);
console.log('-----------------------------------------------------------------\n\n');
res.end();
});
});
一个报名接口,id字段自增 所以不用设值,后面分别是名字 电话 时间 报名的活动名称