这次选择nodejs express mysql使用http作为客户端,使用express框架搭建服务器,实现数据的添加、删除和修改。本文可以看作是前一篇文章的升级,增加了与数据库的交互。
装置
节点直接去官网下载,选择下载到https://nodejs.org/en/download/current/
cnpm install express//express framework安装cnpm install mysql //mysql驱动程序安装brew install mysql //数据库安装,根据命令提示符,初始化并配置mysql.server start//启动mysql服务mysql.server stop//停止mysql服务mysql -u用户名-p用户密码//登录mysqlnodejs连接数据库时报错
错误: ER _ NOT _ SUPPORTED _ AUTH _ mode :客户端不支持服务器请求的身份验证协议;考虑升级MySQL客户端
结论是MySQL8.0的加密方式与MySQL5.0不同,连接会报错。
解决方法如下:通过命令行输入提取的mysql根目录。
登录数据库
输入根用户的密码
输入密码: ******
更改加密方法
MySQL ALTER USER ' root ' @ ' localhost '由' password '标识PASSWORD EXPIRE NEVER更改密码:在本例中,123456是新密码
MySQL ALTER USER ' root ' @ ' localhost ' IDENTIFIED WITH MySQL _ native _ password BY ' 123456 ';刷新:
MySQL FLUSH PRICES;数据库连接
var MySQL=require(' MySQL ');//介绍数据库驱动模块//console.log(mysql)//连接到数据库配置varconnection=MySQL . create connection({//主机名,通常是本地主机: 'localhost ',//数据库的端口号,如果没有设置,默认值为3306 port: '3306 ',//创建数据库时设置用户名user3360' root ',//设置密码password:' * * * * * ',//创建数据库3360//与数据库connection.connect()建立连接;//查询数据库连接. query ('select * from userinfo ',函数(错误,结果,字段){ if(error)throw error;console.log(结果);});//关闭连接connection . end();在数据库中创建新表,如下所示:
快速服务器
Express是一个基于Node.js平台的极简、灵活的web应用开发框架。这里没有构建Express框架的项目,只是简单的搭建一个服务器,实现数据库的添加、删除和修改。
var express=require(' express ');var app=express();var query=require(' ./db ')//var router=require(' router ')var MySQL=require(' MySQL ');var查询字符串=require('查询字符串');//console.log(mysql)//连接数据库的配置var连接=MySQL。创建连接({//主机名称,一般是本机host: 'localhost ',//数据库的端口号,如果不设置,默认是3306端口: '3306 ',//创建数据库时设置用户名user: 'root ',//创建数据库时设置的密码password: '1234567 ',//创建的数据库数据库: ' express ' });//与数据库建立连接连接。connect();//根据参数,查询数据app.get('/index ',函数(请求,决议){ //处理得到请求,获取得到请求参数//处理/: xx形式的得到或邮政请求,获取请求参数这里没有使用到var params=req.query //查询语句var sql='从用户信息中选择*其中名称=?和年龄=?“var其中_value=[params.name,params。年龄];//控制台。日志(SQL)连接。查询(SQL,where_value,函数(err,result){ if(err){ console。日志“[SELECT ERROR]:”,错误。消息);} res.send(结果)//数据库查询结果返回到结果中,把查询数据发送到客户端});})//增加数据app.post('/add ',函数(请求,决议){ //获取及处理增加的数据var post=req.on('data ',function(chunk){ post=chunk;控制台。log(post)});req.on('end ',function () { //查询参数解析post=查询字符串。解析(发布);var sql='插入用户信息集id=?名称=?年龄=?地址=?'var add_value=[post.id,post.name,post.age,post。地址]连接。查询(SQL,add_value,函数(err,result) { if (err) { console.log('新增数据失败');} res.send('增加数据成功') //响应内容增加数据成功});});})//修改数据app.put('/update ',函数(请求,决议){ //处理请求修改的数据和条件var update=req.on('data ',function(chunk){ update=chunk;控制台。日志(更新)});req.on('end ',function () { //查询参数解析update=querystring.parse(更新);var sql='update userinfo set name=?年龄=?地址=?其中id=?”var update_value=[update.name,update.age,update.address,update.id] connection.query(sql,update_value,function (err,result) { if (err) { console.log('修改数据失败呃。消息);} res.send('修改数据成功') //响应内容修改数据成功});});})//删除数据app.delete('/delete ',function (req,RES){ var params=req。查询变量SQL='从用户信息中删除,其中名称=?var,其中_ value=[params。姓名];//控制台。日志(SQL)连接。查询(SQL,where_value,函数(err,result) { if (err) { console.log('删除失败呃。消息);} res.send('删除成功') });})//关闭连接//连接。end();//监听8080端口var server=app.listen(8080,function () { console.log('服务器以3000端口运行)})http客户端
这里把节点超文本传送协议(Hyper Text Transport Protocol的缩写)模块来搭建客户端,发起请求。
得到请求
const http=require(' http ');//发送请求的配置让config={ host: 'localhost ',port: 8080,//get请求参数路径: /索引?name=billage=21 ',method: 'GET ',header RS : { a : { 1 } }//创建客户端let client=http.request(config,function(res) { //接收服务端返回的数据让repData=res.on('data ',function(data){ repData=data。tostring()。控制台。log(repData)});res.on('end ',function(){//console。日志(缓冲区。concat(arr)).toString());});});//发送请求客户。end();客户端发起参数名称=账单=21的查询请求,服务端根据条件操作数据库,响应数据为:
邮政请求
var http=require(' http ');var查询字符串=require('查询字符串');//查询参数拼接//增加的数据var contents=查询字符串。stringify({ id :5,age:'23 ',名称: '艾利斯提,地址: '东北',});var options={ host : ' localhost ',port: 8080,path:'/add ',method: 'POST ',header RS : { ' Content-Type ' : ' application/x-www-form-URL编码',' Content-Length ' :内容。长度} };var req=http.request(options,function(RES){ RES . setencoding(' utf8 ');res.on('data ',function(data){ console。日志(数据);})})//发送数据req.write(目录);请求。end();//结束请求,否则服务器将不会收到信息邮政请求发送增加数据,服务端根据请求,向数据库追加一条数据,响应客户端:增加数据成功。增加后的数据表:
放请求
const http=require(' http ');var查询字符串=require('查询字符串');//查询参数拼接//发送请求的配置var contents=查询字符串。stringify({ id :1,年龄:'25 ',姓名: 'Sarah ',地址: '青岛',});let config={ host: 'localhost ',port: 8080,path:'/update ',method: 'PUT ',header RS : { a : 1 } }//创建客户端let client=http.request(config,function(res) { //接收服务端返回的数据让repData=res.on('data ',function(data){ repData=data。tostring()。控制台。log(repData)});});client.write(目录);//发送请求客户。end();这里请求和邮政方法类似,服务端根据结构化查询语言语句("更新用户信息集名称=?年龄=?地址=?其中id=?)修改数据库的内容,响应客户端:修改数据成功。修改后的数据表:
删除请求
const http=require(' http ');//发送请求的配置让config={ host: 'localhost ',port: 8080,//删除数据的参数path:'/delete?name=bill ',method: 'DELETE ',header RS : { a : 1 } }//创建客户端let client=http.request(config,function(res) { //接收服务端返回的数据让repData=res.on('data ',function(data){ repData=data。tostring()。控制台。log(repData)});res.on('end ',function(){//console。日志(缓冲区。concat(arr)).toString());});});//发送请求客户。end();客户端发送删除数据的参数,客户端拿到参数,根据条件,操作数据库删除相应数据,响应客户端:删除成功。删除后的数据表:
总结
接触后端的内容后,从后端的角度重新理解了前端数据的传输和操作。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。