`

基于express框架下Node.js+MySQL连接池的数据库增添操作

 
阅读更多

题记:

   这几天一直在学习Node以及关系型数据库的知识,刚刚接触到了express框架,就想利用express框架,实现一个通过ajax操作来向数据库内增添数据的功能。

正文:

  话不多说,现在我们就来一起看看吧!我们需要了解哪些知识,做哪些基本工作!

  • 首先,我们要了解我们的基本技术点。前端:html+jquery下的AJAX方法
  • 其次,我们要了解后端的知识,我是用的基于express框架下的node
  • 然后,对于静态的html,是无法发送请求的,我使用的是nginx,非常轻量级的服务器
  • 最后,我们使用MySQL这个典型的关系型数据库+可视化工具navicat

  那么,我们先从第一步做起,那就是写前端的代码:

  注释如下:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>接收参数</title>
</head>
<body>
	<!-- 需要输入的text -->
	username:<input type="input" id="username"> <br> 
	firstname:<input type="input" id="firstname">
	<button type="button" id="btn">点击提交</button>
	<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.6.4/jquery.min.js"></script>
	<script type="text/javascript">
		$(function() {
			$('#btn').click(function() {
				var username = $('#username').val(); // 获取username的值
				var firstname = $('#firstname').val(); // 获取firstname的值
				$.ajax({
					url: 'http://localhost:1337/login', // url地址要跟node中的地址对应
					type: 'POST', // GET或者POST ,这里选用POST
					dataType: 'json',
					data: {
						username: username,
						firstname: firstname
					},
					success:function(data) {
					    console.log(data);
						switch (data.code){
                            case 1:
                                alert('插入数据成功');
                                break;
                            case 2:
                                alert('插入数据失败');
                                break;
                            case 0:
                                alert('请求失败,请检查数据格式!');
                        }
					}
				})
				
			});
		});
	</script>
</body>
</html>

 

 上面的代码中,包含了html已经如何获取输入框内的值传向后端

 接下来,在开始展示node代码之前,我想先向大家展示一下数据库的设计

 因为关系型数据库与NOSQL不太一样,NOSQL是由文档(关系型中的row)组成,再有多个文档组合成集合(关系型中的table,具有很高的灵活性,每个文档中的key是可以不一样的。而关系型则必须提前设计好字段,我们才可以向表中插入一行数据下面简单展示一下数据库。(本人是学前端的,所以可能看起来很不成熟,希望大家谅解)



 

 

  下面,我们来看看基于express的node是如何写的(server端的JavaScript):

/**
 *@fileName: 114.1.2.js
 *@author: 吴晓阳
 *@time: 2017/12/15
 *@description: 利用连接池进行多次提交
 */
var express = require('express'); // express模块 可以使用 npm install -g express
var qs = require("querystring"); // querystring模块 可以使用 npm install -g express 用于处理传来的参数串
var mysql = require('mysql'); // mysql模块 同样可以使用 npm install -g mysql 来全局下载
var app = express();
var pool = mysql.createPool({
    host     : 'localhost',  // 主机名
    port     : 3306, // 数据库连接的端口号 默认是3306
    database : 'test', // 需要查询的数据库
    user     : 'root', // 用户名
    password : '' // 密码,我的密码是空。所以是空字符串
});
app.post('/login',function (req,res) { // 注意 这里的login与最后的app.listen(1337,'localhost') 组成 localhost:1337/login 与 前端的ajax的url相对应,这里我也是自己搞了好久,才对应上,否则会报404
    var body = "",data;

    req.on('data', function(chunk) {
        body += chunk;
        console.log(body);
    });
    req.on('end', function() {
        // 解析参数
        data=qs.parse(body); // 这里值得注意!querystring中的pares方法可以吧data解析成对象,供下文使用
        // 设置响应头部信息及编码
        res.writeHead(200, {
            'Content-Type': 'text/html;charset=utf8',
            "Access-Control-Allow-Origin":"*" //*表示允许的域名地址,本地则为'http://localhost' 不添加此参数 会被认为是跨域
        });
        if(data.username) { // 输出提交的数据
            // 插入数据
            pool.getConnection(function (err,connection) { // 使用连接池
                if(err){
                    console.log('与MySQL数据库建立连接失败!');
                    console.log('错误信息为:' + err);
                }
                else{
                    console.log('与MsSQL数据库建立连接成功!');
                    connection.query('INSERT INTO users SET ?',{
                        username: data.username, // data.username 则是 由qs解析过的
                        firstname: data.firstname // data.firstname 则是 由qs解析过的
                    },function (err,result) {
                        if(err){
                            console.log('插入数据失败');
                            res.end('{code:2}'); // 同时要注意返回的数据要是json对象,以下同
                            connection.release(); // 释放连接池的连接,因为连接池默认最大连接数是10,如果点击数超过10 则不会与客户端连接,客户端的请求也会因为长时间无反应报错,下面会粘出报错的图
                        }
                        else{
                            console.log('插入数据成功');
                            res.end('{code:1}');
                            connection.release(); // 释放连接池的连接
                        }
                    })
                }
            });
        } else { 
            res.end('{code:0}'); // 传入的值为空时,不执行插入操作
        }
    })
});
app.listen(1337,'localhost');

 如果不释放连接池的连接,我们点击15次会发现:



 

 第十一个请求,会无反应。

 释放连接池的连接后,示例如下:



 我们会发现,十多次点击都是有反应的,这就代表,我们每次完成一次插入操作后,连接又重新回到了连接池中,供下一次请求使用!最后,数据库中添入数据如下:

 最后呢,希望大家可以自己尝试一下,有什么写的不对的地方也请不吝指教!

  • 大小: 60.4 KB
  • 大小: 39.9 KB
  • 大小: 51.7 KB
  • 大小: 43.6 KB
  • 大小: 60.1 KB
  • 大小: 61.4 KB
0
0
分享到:
评论

相关推荐

    node.js+mysql博客全栈系统源码.zip

    Node.js是基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript编写服务器端代码。其主要特点包括事件驱动、非阻塞I/O以及模块化结构,特别适合处理大量并发连接,使得开发高并发、实时交互的应用变...

    mysql实战练手项目, 后端node.js+mysql开发

    在本项目中,你将学习如何使用MySQL数据库与Node.js后端框架进行实战开发。这是一个典型的数据驱动Web应用,通过Node.js实现服务器逻辑,而MySQL作为数据存储和管理的后台。下面将详细介绍涉及的关键知识点: 1. **...

    nodejs+express+mysql后台框架

    基于这个框架进行二次开发,开发者需要熟悉JavaScript语言,了解Express的中间件机制,以及如何使用MySQL进行数据库操作。同时,利用npm(Node.js的包管理器)管理和安装项目所需的额外模块,可以进一步扩展框架的...

    nodejs封装好的mysql数据库模块,带mysql连接池以及百万测试数据

    本模块基于Node.js实现了对MySQL数据库的封装,利用了mysql连接池来优化性能,并且包含了用于测试的百万级数据,确保了在大数据量场景下的稳定性和效率。以下将详细介绍该模块的关键知识点: 1. **Node.js与MySQL**...

    基于Vue.js+express+MySQL的全栈图书馆信息管理系统的后端服务器,本科毕业设计。.zip

    《基于Vue.js+Express+MySQL的全栈图书馆信息管理系统后端服务器详解》 在现代互联网技术的快速发展下,全栈开发已经成为开发人员必备的技能之一。本项目——“基于Vue.js+Express+MySQL的全栈图书馆信息管理系统的...

    js客户端通过node.js实现的Server操作MySQl

    本项目“js客户端通过node.js实现的Server操作MySQL”旨在展示如何不依赖像Express这样的框架,直接使用Node.js的核心功能来构建一个简单的服务器,并与MySQL数据库进行交互。以下将详细介绍这一过程中的关键知识点...

    Node.js操作mysql数据库增删改查

    本文将详细讲解如何使用Node.js的`mysql`模块来实现数据库的增删改查(CRUD)操作。 首先,要开始操作MySQL数据库,你需要先安装`mysql`模块。这可以通过Node.js的包管理器npm(Node Package Manager)来完成。在...

    管理系统系列--Nodejs + Express + Ejs + Mysql 后台管理系统.zip

    【标题】"管理系统系列--Nodejs + Express + Ejs + Mysql 后台管理系统" 提供了一套基于Node.js、Express、EJS模板引擎和MySQL数据库构建的后台管理系统的实现方案。这一组合是Web开发中常见且强大的技术栈,特别...

    nodejs + express + mysql +log4js+redis

    在本项目中,开发者利用了Node.js的Express框架构建了一个Web应用程序,并结合了MySQL数据库、Redis缓存系统以及log4js日志管理工具,实现了基于cookie的用户登录验证功能,同时还涉及到了对MySQL存储过程的调用。...

    Node+Express+Mysql+Ejs实现增删改查接口,支持热部署

    在本项目中,我们主要探讨如何使用Node.js的Express框架,结合MySQL数据库和EJS模板引擎来构建一个具有增删改查(CRUD)功能的Web应用,并支持热部署。以下将详细介绍每个部分的关键知识点。 **1. Node.js与Express...

    Node.js-使用express对mysql数据库进行增删改查的demo

    在本文中,我们将深入探讨如何使用Node.js的Express框架与MySQL数据库进行交互,实现数据的增删改查操作。Express是Node.js中最流行的Web应用程序框架,它简化了服务器端编程,使得开发人员能够快速构建高效、可扩展...

    Node.js-[全文]如何正确的学习Node.js

    在IT行业中,Node.js是一个备受关注的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程。本文将深入探讨如何正确地学习Node.js,基于提供的标题和描述,我们将围绕这一主题展开,详细介绍Node.js的...

    Express中操作mysql数据库

    在Node.js环境中,Express框架是构建Web应用的热门选择,尤其对于后端开发而言。它提供了简洁、灵活的API,使得处理HTTP请求和响应变得轻松。在这个“Express中操作MySQL数据库”的主题中,我们将深入探讨如何利用...

    基于Node.js MySQL实现游戏商城系统【优质毕业设计、课程设计项目】.zip

    本项目是一个基于Node.js和MySQL实现的游戏商城系统,适合用作优质的毕业设计或课程设计项目。这个系统提供了全面的功能和完善的开发文档,帮助学生或开发者理解Web应用的开发流程,特别是涉及后端技术和数据库管理...

    Node.js 实战

    3. **中间件框架**:讲解Express.js等常用的Node.js框架,它们简化了Web应用的开发。学习如何使用路由、中间件和模板引擎来构建高效的应用。 4. **数据库集成**:Node.js可以与多种数据库进行交互,如MongoDB、...

    Node.js-nodejs服务端开发ExpressMysql

    安装Node.js和npm(Node包管理器)是基础,然后通过npm安装Express、Express的MySQL连接库如`mysql2`,以及其他必要的依赖如`body-parser`(解析请求体)和`ejs`(模板引擎)。 接下来,建立数据库连接。使用`mysql...

    Get Programming with Node.js 1st Edition

    书中会讲解如何使用Mongoose(MongoDB的ODM)或者Sequelize(SQL数据库的ORM)进行数据操作,包括CRUD操作和连接池管理。 RESTful API设计也是Node.js开发者必须了解的技能。书中会涵盖如何使用Express框架来创建...

    nodejs+express+mysql学习nodejs的小项目.zip

    在本项目中,“nodejs+express+mysql学习nodejs的小项目”是一个初学者友好的教程,旨在帮助开发者了解如何使用Node.js、Express框架以及MySQL数据库来构建Web应用程序。这个压缩包可能包含了源代码、配置文件和其他...

    nodeJS中express框架和mysql简单的连接demo

    在Node.js环境中,Express框架是构建Web应用的首选工具,而MySQL则是广泛使用的开源关系型数据库管理系统。这个“nodeJS中express框架和mysql简单的连接demo”项目,旨在演示如何将两者结合,实现在Web应用中与...

    NodeJS+Mysql 很好的练习项目+入手NODE

    在IT行业中,Node.js和MySQL是两个非常重要的技术,它们分别代表了服务器端JavaScript执行环境和流行的开源数据库系统。Node.js以其高效的非阻塞I/O模型和事件驱动特性,在Web开发领域占据了重要的地位,而MySQL则以...

Global site tag (gtag.js) - Google Analytics