概述
#MySQL
首先我们来了解一下mysql数据库,数据库称作电子化的文件柜,以一定方式存储,多个用户共享,有尽可能小的冗余度,与应用程序彼此独立的数据集合.在数据库表中有唯一主键,常用数据库操作语句也就是增insert into 删 delete改 updata查select
##数据库常用语法
//插入数据
INSERT INTO `` (`id`,`name`,`pwd`,`tel`,`sex`) VALUES (1,'xufei','971025xf','13782900179','男');
//查询数据
select * from 表名where条件
//删除数据
delete from student where 条件
//改数据
update 表名set 内容where 条件
//like语句such as
select *from person where name like''%王''
//排序 orderby ASC升序DESC降序such as
select *from student order by id DESC
//限制查询条数limit 数字 such as
select * from student limit 5;
//注意 想要使用表格时不前缀数据库名使用use 数据库名之后就会方便很多
##在后端中创建数据库链接
//创建数据库链接
var mysql=require('mysql');
var conn=mysql.createConnection({
host:'localhost',user:'数据库用户名',passward:'用户密码',databases:'数据库名'
})
//链接
conn.connect();
//操作数据库
conn.query(sql语句,function(err,result){
内容一般都会res.send(JSON.stringfy(result));
})
conn.end();
//扩展update set中where无法查询非主键行需要将update安全级别设为0
SET SQL_SAFE_UPDATES=0;
##登陆客户端核心代码展示
fetch(myUrl,{
method:"POST",
body:`name=${name}&pwd=${pwd}`,
headers:{
'Content-Type':"application/x-www-form-urlencoded"
}
}).then(data=>data.json()).then(res=>{
alert(res.msg);
if(res.msg=='登陆成功'){
window.location.href='http://127.0.0.1:5501/loacl/bookkinds.html';
// document.cookie='name=;01 Jan 1970 00:00:00 GMT';
// setCookie(name,`${name}`);
}
});//请求结束
//登陆后端代码展示
var express = require('express');
var mysql=require('mysql');
var router = express.Router();
router.post('/',function(req,res,next){
let name=req.body.name;
let pwd=req.body.pwd;
// let tel=req.body.tel;
// let sex=req.body.sex;
console.log(name,pwd);
// 定义sql语句
var sql=`select * from person where name='${name}' and pwd='${pwd}'`;
var sql2=`select name from person where name ='${name}'`;
var obj={};
// 创建链接
var conn=mysql.createConnection({
host:'localhost',
user:'root',
password:'root',
database:'user'
});
// 链接数据库
conn.connect();
// 操作数据库
conn.query(sql2,function(err,result){
if(!err){
console.log('链接数据库成功第一次-----------------');
if(result.length!=0){
openDatabase(sql,function(err,result){
console.log('链接数据库成功第二次-----------------');
if(result.length!=0){
console.log('核对信息成功-------------------');
obj.code='201';
obj.msg='登陆成功';
res.send(JSON.stringify(obj));
}
else{
console.log('核对信息失败----------------',err);
obj.code='401';
obj.msg='登陆密码错误';
res.send(JSON.stringify(obj));
}
}) ;
}
else{
console.log('用户不存在',err);
obj.code='402';
obj.msg='用户不存在,请重新输入';
res.send(JSON.stringify(obj));
}
}
else{
obj.code='406';
obj.msg='登陆失败';
console.log('链接数据库失败');
res.send(JSON.stringify(obj));
}
});
conn.end();
});
module.exports=router;
function openDatabase(sql,fn){
var conn=mysql.createConnection({
host:'localhost',
user:'root',
password:'root',
database:'user'
});
conn.connect();
conn.query(sql,function(err,result){
fn(err,result);
});
conn.end();
}
//注册后端代码展示
var express = require('express');
var mysql=require('mysql');
var router = express.Router();
router.post('/',function(req,res){
let name=req.body.name;
let pwd=req.body.pwd;
let tel=req.body.tel;
let sex=req.body.sex;
// console.log(name,age,addr)
// sql语句
var sql=`insert into person (name,pwd,tel,sex) values('${name}','${pwd}','${tel}','${sex}');`;
var obj={};
// 创建链接
var conn=mysql.createConnection({
host:'localhost',
user:'root',
password:'root',
database:'user'
});
// 链接数据库
conn.connect();
// 操作数据库
conn.query(`select * from person where name='${name}'`,function(err,result,feild){
if(!err){
if(result.length!=0){
obj.code='201'
obj.msg="用户已存在";
res.send( JSON.stringify(obj));
}
else{
openDatabase(sql,function(err,result){
if(!err){
obj.code='202';
obj.msg="注册成功";
res.send( JSON.stringify(obj));
}
else{
console.log('写入数据库失败',err);
obj.code="402";
obj.msg="注册失败";
res.send( JSON.stringify(obj));
}
});
}
}
else{
obj.code='401'
obj.msg="服务器错误222222";
res.send( JSON.stringify(obj));
}
// res.send( JSON.stringify(obj));
// console.log(result);
// res.send( JSON.stringify(obj));
//
});
// 关闭数据库
conn.end();
});
module.exports=router;
function openDatabase(sql,fn){
var conn=mysql.createConnection({
host:'localhost',user:'root',password:'root',database:'user'
});
conn.connect();
conn.query(sql,function(err,result){
fn(err,result);
});
conn.end();
}
//书城详情页展示
var express=require('express');
var mysql=require('mysql');
var router=express.Router();
router.get('/',function(req,res){
let cook=req.query.bid;
var sql=`select * from book_list where bid=${cook};`;
var obj={};
var conn=mysql.createConnection({
host:'localhost',
user:'root',
password:'root',
database:'user'
});
conn.connect();
conn.query(sql,function(err,result){
if(!err){
obj.code='201';
obj.msg='查询数据库成功';
res.send(JSON.stringify(result));
console.log('链接成功',obj);
}
else{
obj.code="401";
obj.msg='查询数据库失败';
console.log('连接失败',obj,err);
}
});
conn.end();
});//录由结束
module.exports=router;
//书城分类页展示
let express= require('express');
let mysql=require('mysql');
let router=express.Router();
//第一个分录由
router.get('/',function(req,res){
let sql=`select * from book_type`;
let obj={};
let conn=mysql.createConnection({
host:'localhost',
user:'root',
password:'root',
database:'user'
});
conn.connect();
conn.query(sql,function(err,result){
if(!err){
console.log('查询数据库第一次成功-------------');
if(result.length!=0){
obj.code='201';
obj.msg='查询分类成功---------------------';
obj.result=result;
}
else{
obj.code='401';
obj.msg='查询分类失败---------------------';
obj.result='';
}
}
else{
console.log('查询数据库失败--------------------',err);
}
res.send(JSON.stringify(obj.result));
})//第一次查询数据库结束
conn.end();
});//第一个分录由结束
// 第二个分录由
router.get('/kinds',function(req,res){
var cid=req.query.id;
var sql=`select * from book_list where id=${cid};`;
var obj2={};
var conn=mysql.createConnection({
host:'localhost',
user:'root',
password:'root',
database:'user'
});
conn.connect();
conn.query(sql,function(err,result){
if(!err){
console.log('查询数据库第二次成功---------');
obj2.code="201";
obj2.msg='查询分类列表成功';
result=JSON.stringify(result);
res.send(result);
console.log(obj2);
}
else{
console.log('查询数据库失败',err);
}
});
conn.end();
});
module.exports=router;
//修改密码页
var express = require('express');
var mysql = require('mysql');
var router = express.Router();
router.post('/', function (req, res, next) {
let name = req.body.name;
let tel = req.body.tel;
let pwd = req.body.pwd;
let obj = {};
// let obj2 = {};
var sql = `select id from person where name='${name}' and tel='${tel}'`;
var conn = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'root',
database: 'user'
});
conn.connect();
conn.query(sql, function (err, result) {
if (!err) {
console.log('链接数据库成功----------');
if (result.length != 0) {
// obj.code = '201';
// obj.msg = '核对正确';
// res.send(JSON.stringify(obj));
let sql2 = `update person set pwd='${pwd}' where id='${result[0].id}'`;
console.log(result,result[0],result[0].id);
openDatabase(sql2,function(err,data){
if (!err) {
console.log('连接数据库第二次成功------');
obj.code = '202';
obj.msg = '修改成功';
res.send(JSON.stringify(obj));
}
else {
console.log('连接数据库第二次失败-------', err);
obj.code = '402';
obj.msg = '服务器错误';
res.send(JSON.stringify(obj));
}
});
}
else {
obj.code = '401';
obj.msg = '核对失败';
obj.result = result;
res.send(JSON.stringify(obj));
}
}
else {
console.log('链接数据库失败----------');
}
});
conn.end();
function openDatabase(sql,fn){
var conn=mysql.createConnection({
host:'localhost',user:'root',password:'root',database:'user'
});
conn.connect();
conn.query(sql,function(err,result){
fn(err,result);
});
conn.end();
}
});
module.exports = router;
//总结心得
1爱出错的地方在于进行两次对数据库操作容易造成重复返回前端数据报错,
2.不足应答返回值放在下面避免代码重复,应多使用封装函数优化代码结构
3.问题没有使用模块化思想
最后
以上就是激昂胡萝卜为你收集整理的关于node.js链接数据库实现前后端交互小案例总结的全部内容,希望文章能够帮你解决关于node.js链接数据库实现前后端交互小案例总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复