这次选用nodejs+express+mysql 使用http作为客户端,express框架搭建服务端,从而实现数据的增删改查。这篇文章可以算作上篇文章的升级篇,加入了和数据库的交互。

安装

node 直接去官网下载选择下载即可https://nodejs.org/en/download/current/

cnpm install express //express框架安装

cnpm install mysql //mysql驱动安装

brew install mysql //数据库的安装,根据命令行提示初始化配置

mysql.server start//启动mysql服务

mysql.server stop//停止mysql服务

mysql -u用户名 -p用户密码//登录mysql

nodejs连接数据库时报错

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support

authentication protocol requested by server; consider upgrading MySQL client

查到的结论是: MySQL8.0版本的加密方式和MySQL5.0的不一样,连接会报错。

解决方法如下: 通过命令行进入解压的mysql根目录下。

登陆数据库

mysql -uroot -p

输入root的密码

Enter password: ******

更改加密方式

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

更改密码:该例子中 123456为新密码

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

刷新:

mysql> FLUSH PRIVILEGES;

数据库的连接

var mysql = require('mysql');//引入数据库驱动模块

//console.log(mysql)

// 连接数据库的配置

var connection = mysql.createConnection({

// 主机名称,一般是本机

host: 'localhost',

// 数据库的端口号,如果不设置,默认是3306

port: '3306',

// 创建数据库时设置用户名

user: 'root',

// 创建数据库时设置的密码

password: '*******',

// 创建的数据库

database: 'express'

});

// 与数据库建立连接

connection.connect();

// 查询数据库

connection.query('select * from userinfo', function (error, results, fields) {

if (error) throw error;

console.log(results);

});

// 关闭连接

connection.end();

新建一张表格在数据库中为:

express服务端

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 querystring = require("querystring");

//console.log(mysql)

// 连接数据库的配置

var connection = mysql.createConnection({

// 主机名称,一般是本机

host: 'localhost',

// 数据库的端口号,如果不设置,默认是3306

port: '3306',

// 创建数据库时设置用户名

user: 'root',

// 创建数据库时设置的密码

password: '1234567',

// 创建的数据库

database: 'express'

});

// 与数据库建立连接

connection.connect();

//根据参数,查询数据

app.get('/index', function (req, res) {

// 处理 get 请求,获取 get 请求参数

//处理 /:xxx 形式的 get 或 post 请求,获取请求参数 这里没有使用到

var params = req.query

//查询语句

var sql = 'select * from userinfo where name= ? and age=?'

var where_value = [params.name, params.age];

// console.log(sql)

connection.query(sql, where_value, function (err, result) {

if (err) {

console.log('[SELECT ERROR]:', err.message);

}

res.send(result) //数据库查询结果返回到result中,把查询数据发送到客户端

});

})

//增加数据

app.post('/add', function (req, res) {

//获取及处理增加的数据

var post = '';

req.on('data', function (chunk) {

post += chunk;

console.log(post)

});

req.on('end', function () {

//查询参数解析

post = querystring.parse(post);

var sql = 'insert into userinfo set id=? , name=? , age=?, address=?'

var add_value = [post.id, post.name, post.age, post.address]

connection.query(sql, add_value, function (err, result) {

if (err) {

console.log('新增数据失败');

}

res.send('增加数据成功') // 响应内容 增加数据成功

});

});

})

//修改数据

app.put('/update', function (req, res) {

//处理请求修改的数据和条件

var update = '';

req.on('data', function (chunk) {

update += chunk;

console.log(update)

});

req.on('end', function () {

//查询参数解析

update = querystring.parse(update);

var sql = 'update userinfo set name=? , age=?, address=? where id=?'

var update_value = [update.name, update.age, update.address,update.id]

connection.query(sql, update_value, function (err, result) {

if (err) {

console.log('修改数据失败', err.message);

}

res.send('修改数据成功') // 响应内容 修改数据成功

});

});

})

//删除数据

app.delete('/delete', function (req, res) {

var params = req.query

var sql = 'delete from userinfo where name= ?'

var where_value = [params.name];

// console.log(sql)

connection.query(sql, where_value, function (err, result) {

if (err) {

console.log('删除失败', err.message);

}

res.send('删除成功')

});

})

//关闭连接

//connection.end();

//监听8080端口

var server = app.listen(8080, function () {

console.log('server running at 3000 port')

})

http客户端

这里把node http模块来搭建客户端,发起请求。

get请求

const http = require("http");

// 发送请求的配置

let config = {

host: "localhost",

port: 8080,

//get请求参数

path:'/index?name=bill&age=21',

method: "GET",

headers: {

a: 1

}

};

// 创建客户端

let client = http.request(config, function(res) {

// 接收服务端返回的数据

let repData='';

res.on("data", function(data) {

repData=data.toString()

console.log(repData)

});

res.on("end", function() {

// console.log(Buffer.concat(arr).toString());

});

});

// 发送请求

client.end();

客户端发起参数name=bill&age=21的查询请求,服务端根据条件操作数据库,响应数据为:

post请求

var http = require('http');

var querystring = require("querystring");

//查询参数拼接

//增加的数据

var contents = querystring.stringify({

id:5,

age:'23',

name: "艾利斯提",

address: "dongbei",

});

var options = {

host: "localhost",

port: 8080,

path:"/add",

method: "POST",

headers: {

"Content-Type": "application/x-www-form-urlencoded",

"Content-Length": contents.length

}

};

var req = http.request(options, function (res) {

res.setEncoding("utf8");

res.on("data", function (data) {

console.log(data);

})

})

//发送数据

req.write(contents);

req.end(); //结束请求,否则服务器将不会收到信息

post请求发送增加数据,服务端根据请求,向数据库追加一条数据,响应客户端:增加数据成功。增加后的数据表:

put请求

const http = require("http");

var querystring = require("querystring");

//查询参数拼接

// 发送请求的配置

var contents = querystring.stringify({

id:1,

age:'25',

name: "Sarah",

address: "qingdao",

});

let config = {

host: "localhost",

port: 8080,

path:'/update',

method: "PUT",

headers: {

a: 1

}

};

// 创建客户端

let client = http.request(config, function(res) {

// 接收服务端返回的数据

let repData='';

res.on("data", function(data) {

repData=data.toString()

console.log(repData)

});

});

client.write(contents);

// 发送请求

client.end();

这里请求和post方法类似,服务端根据sql语句('update userinfo set name=? , age=?, address=? where id=?')修改数据库的内容,响应客户端:修改数据成功。修改后的数据表:

delete请求

const http = require("http");

// 发送请求的配置

let config = {

host: "localhost",

port: 8080,

//删除数据的参数

path:'/delete?name=bill',

method: "DELETE",

headers: {

a: 1

}

};

// 创建客户端

let client = http.request(config, function(res) {

// 接收服务端返回的数据

let repData='';

res.on("data", function(data) {

repData=data.toString()

console.log(repData)

});

res.on("end", function() {

// console.log(Buffer.concat(arr).toString());

});

});

// 发送请求

client.end();

客户端发送删除数据的参数,客户端拿到参数,根据条件,操作数据库删除相应数据,响应客户端:删除成功。删除后的数据表:

总结

接触后端的内容后,从后端的角度重新理解了前端数据的传输和操作。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

expressjs如何做mysql注入_Node.js+Express+Mysql 实现增删改查相关推荐

  1. Js实现简易的增删改查

    Js实现简易的增删改查 用JavaScript实现简单增删改查工作,这个应该是多数Js初学者都比较棘手的一个问题 在下面我给大家写了一个简单的案例,该案例中没有实现增加操作,大家可以自己探索一下 ht ...

  2. js中数组的增删改查遍历迭代过滤

    注:最后附有源码,可自行测试,动动手印象更深刻 js中数组的增删改查.排序.遍历.迭代.过滤 1.展开语法 2.解构赋值 3.剩余解构 4.增删改 5.合并拆分 6.查 7.排序 8.遍历 9.迭代 ...

  3. 对表格实现修改查询html,【原生】js实现表格的增删改查

    说在前面的,写给小白白的,大神请绕道~ 今天用原生js写一下动态表格的增删改查,主要是熟悉一下js的DOM操作. 首先,做一个表格,用来显示提交的数据,如图下: 此处,我添加了编号.姓名.密码.生日. ...

  4. MySQL笔记(二)基础的增删改查

    这是我在学习Mysql之路上做的笔记,今天将它粘出来.这一篇主要是简单增删改查.有错误的欢迎大家指出... #增删改查 #创建部门表 CREATE TABLE IF NOT EXISTS tb_dep ...

  5. 纯JS+HTML简单表格增删改查

    前言 欢迎大家来到我的博客,请各位看客们点赞.收藏.关注三连! 欢迎大家关注我的知识库,Java之从零开始 · 语雀 你的关注就是我前进的动力! CSDN专注于问题解决的博客记录,语雀专注于知识的收集 ...

  6. 通过php执行mysql语句进行学生成绩表的增删改查

    服务器:Apache 数据库:MySQL 通过php执行mysql语句进行增删改查,首先进行功能分析,需要写哪些执行文件,及其执行的功能: 1.index.php中:通过php执行sql语句获取数据库 ...

  7. java web期末课程设计 学生成绩管理系统(mysql,jstl+el,Javabean)+增删改查,session域+servlet(基础易理解)

    学生成绩管理系统 一.实验目的 为了更好的学习理解JavaWeb,创建了此系统.此系统可以帮助学习Java web基础,特别是javaweb入门,此系统使用大部分Java web基础知识.Java w ...

  8. node mysql 查询_Node.js使用mysql进行查询详解

    本篇教程介绍了Node.js使用mysql进行查询详解,希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入. < 因为返回的是个对象 var selectSql1=&quo ...

  9. JS对于JSON的增删改查操作

    使用JS对JSON数据的处理 最近项目中遇到需要对Json数据进行相关操作,比如增删改操作.之前没有操作过以为会挺难的,网上搜索下,发现还是比较简单的.相关的代码如下所示: <script ty ...

最新文章

  1. 想读博士?进来看看!
  2. numpy可视化教程
  3. python 文件操作 os.listdir() 遍历文件
  4. 在 SAP conversation AI 里消费 ABAP OData 服务
  5. SAP One Order redesign里的新CDS view
  6. python执行linux命令返回结果_python执行linux命令的简单示例
  7. java c标签 if有值_c标签 if else c标签 总结
  8. 在Docker中安装和部署MongoDB集群
  9. [学习OpenCV攻略][001][Ubuntu安装及配置]
  10. java swing 最小化到托盘_用Java实现程序最小化到托盘区
  11. Python基础笔记(四)切片、列表生成式、迭代
  12. OpenCV颜色空间——HLS颜色空间
  13. atitit.修复xp 操作系统--重装系统--保留原来文件不丢失
  14. .tar.gz和.tar.bz2解压命令
  15. Magick 使用注意
  16. c++11多线程编程(十):packaged_task介绍与实例
  17. openssl 的编译(linux、Ubuntu) 和 交叉编译(arm、Hi3531A)的问题分析、解决
  18. android番茄时钟代码,一种实现极简番茄时钟的思路
  19. Mac上更新Go版本|Go Mod使用|避坑指南|
  20. mermaid流程图工具_基于 Mermaid 的时序图、流程图和甘特图

热门文章

  1. Microsoft SQL Server Desktop Engine安装过程中遇到的问题(2)
  2. 注解版poi操作工具
  3. Mybatis源码阅读(四):核心接口4.2——Executor(上)
  4. spring专业术语了解
  5. 浅析jQuery中常用的元素查找方法总结
  6. exfat单元分配要设置多少_微软宣布,支持往Linux内核里添加exFAT存储了!跨系统存储的福音...
  7. centos默认安装mysql_centos6.x默认安装mysql5.7
  8. 编译安装mysql5.5.39_编译安装MySQL5.5
  9. java 内存分布_一图看懂JVM内存分布,永久记住!
  10. scala中循环守卫_Scala中的循环