php和nodejs连接mysql数据库_Nodejs连接mysql数据库

学习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数据交互就完成了。

你可能感兴趣的:(php和nodejs连接mysql数据库_Nodejs连接mysql数据库)