文档章节

Nodejs连接mysql数据库

webphp
 webphp
发布于 2017/07/26 11:28
字数 576
阅读 9
收藏 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
博文 92
码字总数 92338
作品 0
海淀
程序员
私信 提问
nodejs 连接Mysql相关操作的示例代码

最近在搞nodejs,要做一些数据库的相关操作,数据库用的是Mysql,网上也有不少代码,红薯也一篇博文说明了相关操作,但是拿来用的时候,发现了一些小问题,仔细研究,红薯提供的代码是官方的...

maweitao
2014/04/03
0
0
nodejs 连接Mysql相关操作的示例代码

最近在搞nodejs,要做一些数据库的相关操作,数据库用的是Mysql,网上也有不少代码,红薯也一篇博文说明了相关操作,但是拿来用的时候,发现了一些小问题,仔细研究,红薯提供的代码是官方的...

Eric_HSBC
2013/09/21
0
0
求教nodejs连接mysql查询出来的结果和命令行查询结果不一致?

最近使用nodejs连接mysql,访问禅道系统的数据库做数据统计时遇到奇怪问题 禅道系统可以正常使用 通过phpmyadmin可以正常访问mysql下的数据库 命令行也可以正常访问mysql 通过自己写的nodej...

悲剧的码农先生
2016/05/12
778
2
nodejs 连接Mysql相关操作的示例代码(orm)

上一篇博文写了nodejs 连接Mysql相关操作的示例代码,主要用到的是sql语句,都是比较基础的。这篇打算介绍一下nodejs的ORM操作,毕竟大型系统的开发还是需要用到ORM. nodejs里有不少的ORM框架...

Eric_HSBC
2013/09/28
0
1
node.js 开发指南 – Node.js 连接 MySQL 并进行数据库操作

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

james_laughing
2016/12/14
4
0

没有更多内容

加载失败,请刷新页面

加载更多

龙芯jdk或java开发

龙芯的jdk安装包可以从www.loongnix.org下载。 4.支持的软件 龙芯JDK在每一次发布产品之前,都会使用一个应用程序列表进行兼容性测试,如表4-2所示。这个列表中既包含简单的Java应用程序,也...

gugudu
9分钟前
0
0
Docker + selenium + jenkins 并行跑自动化测试

背景 目标:使用docker做UI自动化测试并在Jenkins运行 调试环境:MocOS 运行环境:Linux ubuntu + docker 涉及工具:docker,selenium,unittest, jenkins 基本思路 找一个适合做自动化的doc...

呐呐丶嘿
13分钟前
1
0
android分辨率,屏幕尺寸,屏幕密度关系

名词定义分辨率分辨率就是手机屏幕的像素点数,一般描述成屏幕的“宽×高”,安卓手机屏幕常见的分辨率有480×800、720×1280、1080×1920等。720×1280表示此屏幕在宽度方向有720个像素...

GoldenVein
25分钟前
1
0
inux驱动的异步通知(kill_fasync,fasync)---- 驱动程序向应用程序发送信号

===========================应用程序========================= #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <poll.h> #include <sign......

天王盖地虎626
26分钟前
1
0
使用android studio时,ADB连接不上手机可能性之一

问题描述:as是通过adb连接手机进行调试了,如果电脑装了鲁大师,360等软件,可能会存在adb被这些软件占用的情况,所以会连接不上手机。这种解决方案有很多,比如通过任务管理器查看是谁占用...

白话
28分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部