文档章节

Nodejs连接mysql数据库

webphp
 webphp
发布于 2017/07/26 11:28
字数 576
阅读 9
收藏 0
点赞 0
评论 0
学习Nodejs第三天,连接mysql数据库进行用户注册,看到网上nodejs搭配的是mongodb,可惜没有学习mongodb,只好用比较熟悉的mysql,只是个人用的方法,不喜勿喷(用的express) 第一步用php一样,先写mysql的配置文件,在站点根目录下创建conf文件夹,创建db.js
module.exports = {
    mysql: {
        host: '127.0.0.1', 
        user: 'root',
        password: '',
        database:'nodejs', 
        port: 3306
    }
};
 第二部创建SQL语句因为本人用的是express可以像php的mvc模式那样操作,所以在站点根目录下创建model文件夹,然后创建文件userSqlMapping.js
// userSqlMapping.js
// CURD SQL语句
var user = {
	insert : 'INSERT INTO user (id, username, password) VALUES(0,?,?)',
	update : 'UPDATE user SET username = ?, password = ? WHERE id = ?',
	delete : 'DELETE FROM user WHERE id = ?',
	queryById : 'SELECT * FROM user WHERE id = ?',
	queryAll : 'SELECT * FROM user'
};
module.exports = user;
在这里要用到util/util.js
// util.js

module.exports = {
	extend : function( target, source, flag){
		for(var key in source){
			if (source.hasOwnProperty(key)) {
				flag ? (target[key] = source[key]) : (target[key] === void 0 && (target[key] = source[key]));

			};
		}
		return target;
	}
}
/util/unil_string.js(这是对程序逻辑操作,字符串操作类,与连接mysql数据库无关)
// string.js
//md5加密解决中文加密不一样的bug
exports.md5 = function md5(data) {
    var Buffer = require("buffer").Buffer;
    var buf = new Buffer(data);
    var str = buf.toString("binary");
    var crypto = require("crypto");
    return crypto.createHash("md5").update(str).digest("hex");
 }
创建userModel.js
// userModel.js
//实现与MySql交互
var mysql = require('mysql');
var $conf = require('../config/db');//引入配置文件
var $util = require('../util/util');
var $util_string = require('../util/string');//处理字符的函数库
var $sql = require('./userSqlMapping');

//使用连接池,提升性能
var pool = mysql.createPool($util.extend({}, $conf.mysql));

module.exports = {
	add : function(req, res, callback){
		pool.getConnection(function(err, connection){
			//获取前台页面传过来的参数
			var post_data = req.body.user
		 	var username = post_data.username;
		 	var password = post_data.password;
		 	//md5加密密码
		 	md5_passwd = $util_string.md5(password);
			//建立连接,向表中插入数据
			connection.query($sql.insert, [username, md5_passwd], function(err, result){
				if ( result ) {
					result = {
						code:200,
						msg:'增加成功',
						data: result,
					}
				}else{
					result = {
						code:0,
						msg:'增加失败',
					}
				}

				//释放连接
				connection.release();
				//能过回调函数返回到前台
				callback(err, result);

			})
		})
	}
}
这样就连接成功数据库,并可以对数据库进行curd操作了,jade中的注册页面可以查看 http://www.webipcode.com/archives/248 然后在app.js的设置路由,要用post(因为在表单中进行的post提交) /routes/user.js
//用户注册
 exports.reg = function(req, res){
	userModel.add(req, res, function(err,result){
		if ( result.code == 200 ) {
			setTimeout(function(){
				res.redirect('/');
			},2500);
			return ;
		}else{
			setTimeout(function(){
				res.redirect('/');
			},2500);
			return ;
		}


	});
	
 }
这样用户注册与mysql数据交互就完成了。

© 著作权归作者所有

共有 人打赏支持
webphp
粉丝 1
博文 91
码字总数 91650
作品 0
海淀
程序员
node.js 开发指南 – Node.js 连接 MySQL 并进行数据库操作

ode.js是一套用来编写高性能网络服务器的JavaScript工具包 通常在NodeJS开发中我们经常涉及到操作数据库,尤其是 MySQL ,作为应用最为广泛的开源数据库则成为我们的首选,本篇就来介绍下如何...

james_laughing ⋅ 2016/12/14 ⋅ 0

【深入浅出Node.js系列十三】用Nodejs连接MySQL

深入浅出Node.js系列 【深入浅出Node.js系列一】什么是Node.js 【深入浅出Node.js系列二】Node.js&NPM的安装与配置 【深入浅出Node.js系列三】深入Node.js的模块机制 【深入浅出Node.js系列四...

陶邦仁 ⋅ 2016/01/19 ⋅ 0

使用MySQL Workbench修改表字符集

问题 MySQL官方网站提供了诸多免费的数据库操作工具,其中, Workbench是一款免费的极佳可视化数据库管理工具,你只需要下载最新版本,即可随心所欲地管理以往许多其他版本的数据库,当然配合...

朱先忠老师 ⋅ 05/09 ⋅ 0

Sequelize 5.0.0-beta.7 发布,基于 Nodejs 的 ORM 框架

Sequelize 5.0.0-beta.7 发布了,此次更新内容如下: fix(data-types/blob): only return null for mysql binary null #9441 fix(errors): use standard .original rather than .raw for ac......

雨田桑 ⋅ 05/29 ⋅ 0

Nodejs学习路线图

Node.js的介绍 Node.js的是建立在Chrome的JavaScript的运行时,可方便地构建快速,可扩展的网络应用程序的平台。Node.js使用事件驱动,非阻塞I/O模型,轻量、高效,可以完美地处理时时数据,...

数通畅联 ⋅ 2016/01/26 ⋅ 0

Sequelize v5.0.0-beta.4 发布,基于 Nodejs 的 ORM 框架

Sequelize v5.0.0-beta.4 发布,Sequelize 是一款基于 Nodejs 的异步 ORM 框架,它同时支持PostgreSQL、MySQL、SQLite 和 MSSQL 多种数据库,很适合作为 Nodejs 后端数据库的存储接口,为快速...

雨田桑 ⋅ 04/30 ⋅ 0

细谈Node.js----我的笔记

学习心得 如何利用Javascript做为服务端脚本,通过Nodejs框架web开发。Nodejs框架是基于V8的引擎,是目前速度最快的 Javascript引擎。chrome浏览器就基于V8,同时打开20-30个网页都很流畅。N...

crossmix ⋅ 2016/01/04 ⋅ 0

Node.JS 学习路线图

 从零开始nodejs系列文章, 将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发。Nodejs框架是基于V8的引擎,是目前速度最快的 Javascript引擎。chrome浏览器就基于V8,同时打开...

永和 ⋅ 2016/06/12 ⋅ 1

Node.JS 学习路线图

原文出处:张丹的博客(@ConanZ) 从零开始nodejs系列文章, 将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发。Nodejs框架是基于V8的引擎,是目前速度最快的 Javascript引擎。...

张丹的博客(@Conan_Z) ⋅ 2014/06/24 ⋅ 0

Node.js学习路线图

Node.js学习路线图 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发。Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎。chrome浏览器就基...

萨斯辈的呼唤 ⋅ 2015/07/19 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 49分钟前 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

Spring boot 项目打包及引入本地jar包

Spring Boot 项目打包以及引入本地Jar包 [TOC] 上篇文章提到 Maven 项目添加本地jar包的三种方式 ,本篇文章记录下在实际项目中的应用。 spring boot 打包方式 我们知道,传统应用可以将程序...

Os_yxguang ⋅ 昨天 ⋅ 0

常见数据结构(二)-树(二叉树,红黑树,B树)

本文介绍数据结构中几种常见的树:二分查找树,2-3树,红黑树,B树 写在前面 本文所有图片均截图自coursera上普林斯顿的课程《Algorithms, Part I》中的Slides 相关命题的证明可参考《算法(第...

浮躁的码农 ⋅ 昨天 ⋅ 0

android -------- 混淆打包报错 (warning - InnerClass ...)

最近做Android混淆打包遇到一些问题,Android Sdutio 3.1 版本打包的 错误如下: Android studio warning - InnerClass annotations are missing corresponding EnclosingMember annotation......

切切歆语 ⋅ 昨天 ⋅ 0

eclipse酷炫大法之设置主题、皮肤

eclipse酷炫大法 目前两款不错的eclipse 1.系统设置 Window->Preferences->General->Appearance 2.Eclipse Marketplace下载【推荐】 Help->Eclipse Marketplace->搜索‘theme’进行安装 比如......

anlve ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部