当我们使用node.js写网站的时候,难免会有一些操作让我们连接数据库,并对数据库经行操作,但是每次都需要对数据库进行连接与断开连接,所以,我写下这篇文章,将连接数据库的操作封装到一个模块中,然后简化外部调用的代码。废话不多说,直接看node.js怎么连接mysql:
1、使用npm安装MySQL模块:
$ npm install mysql -S
2、在你需要对数据库进行操作的地方引入模块mysql:
var mysql = require(‘mysql’);
3、建立连接,并且定义query语句(可以对数据库进行操作):
这里就你要多说几句了,我们通过mysql下的createConnection方法可以为连接配置参数,如下代码:
var connection = mysql.createConnection({
host : 'localhost',
port : 3306,
database : 'myweb',
user : 'myroot',
password : 'myroot'
});
当参数配置完成后,我们就可以通过配置好的connection对象进行数据库的连接,
connection.connect(function(err){});
当连接数据库成功之后,我们就可以对数据库进行操作了,即connection下边的query方法(这里注意,操作语句需要在创建好连接的回调函数中)
connection.query(sql,[params],callback);
它接受三个参数,第一个是SQL语句,但是要注意,当传变量的时候要用‘?’代替,不要使用字符串拼接;第二个参数就是按照参数一中‘?’的顺序将变量排列的数组;第三个参数就是回调函数,返回进行数据操作后的数据或者影响;(也可以传两个参数,SQL语句和回调函数,但是这种方法不安全,同时会让SQL语句过于复杂,所以我们一般不推荐使用)
4关闭连接:
同样是connection下边的方法,有两种关闭方式,第一种是connection.end(function(err){}); 可以接受关闭连接后的回调函数;第二种是connection.destroy(); 此方法与第一种的区别就是没有回调,直接销毁连接;
5、 基本方法学到了之后,我们就可以自己封装一个模块,供外部调用方便了;
A,首先,我们需要在创建一个mysql连接的配置模块database.config.js(方便后期修改),和一个进行操作的模块db.js(用于进行数据库的链接和数据的操作);代码部分分别如下:
//a)database.config.js代码:
//配置链接数据库参数
module.exports = {
host : 'localhost',
port : 3306,
database : 'myweb',
user : 'myroot',
password : 'myroot'
};
//b)db.js代码:
//定义数据库query函数,向外暴露
var mysql = require('mysql');
var databaseConfig = require('./database.config'); //引入数据库配置模块中的数据
//向外暴露方法
module.exports = {
query : function(sql,params,callback){
//每次使用的时候需要创建链接,数据操作完成之后要关闭连接
var connection = mysql.createConnection(databaseConfig);
connection.connect(function(err){
if(err){
console.log('数据库链接失败');
throw err;
}
//开始数据操作
connection.query( sql, params, function(err,results,fields ){
if(err){
console.log('数据操作失败');
throw err;
}
//将查询出来的数据返回给回调函数,这个时候就没有必要使用错误前置的思想了,因为我们在这个文件中已经对错误进行了处理,如果数据检索报错,直接就会阻塞到这个文件中
callback && callback(results, fields);
//results作为数据操作后的结果,fields作为数据库连接的一些字段,大家可以打印到控制台观察一下
//停止链接数据库,必须再查询语句后,要不然一调用这个方法,就直接停止链接,数据操作就会失败
connection.end(function(err){
if(err){
console.log('关闭数据库连接失败!');
throw err;
}
});
});
});
}
};
B、封装好了自定义模块之后,我们就可以在需要的地方轻松调用了,这个时候,你就会感觉到刚才做的工作是真的管用,以下是调用实例:
var db = require('./../model/db'); //引入刚才自定义的模块
//对数据库操作(从show_cascade 表中检索所有字段,并打印出结果)
db.query('select * from show_cascade', [],function(results,fields){
console.log(results);
console.log(fields);
});
怎么样,有了这个方法,在也不用愁node.js连接数据库的繁琐操作了!这是本人写的第二篇博客,希望大家还能给一些好的意见,如果有错误也请及时跟我联系,谢谢!