node.js操作mysql 回调返回值

刚入门node.js的朋友可能不知道node.js操作mysql 是如何回调返回值得,我给你大家介绍介绍

简介和安装 测试MySQL 认识一下Connection Options MYSQL CURD 插入 更新 查询 删除 Nodejs 调用带out参数的存储过程,并得到out参数返回值 结束数据库连接两种方法和区别 连接池Pooling connections 创建 其它连接池配置选项 释放 使用示例 断线重连 其它…

Node.js与MySQL交互操作有很多库,具体可以在 https://www.npmjs.org/search?q=mysql 查看。

我选择了felixge/node-mysql,用的人比较多,先随大溜看看它的使用,暂时没有太过纠结于各库之间的执行性能问题,对其它库有研究的筒子也可以分享一下性能要求较高时的选择^_^!

地址:https://github.com/felixge/node-mysql
https://www.npmjs.org/package/mysql

安装
npm install mysql
node.js操作mysql 回调返回值_第1张图片

示例

//设置连接数据库参数
var mq = require("mysql");
var db_conf = {
    host:'192.168.1.32',
    post:'3306',
    user:'test',
    password:'test',
    database:'opensips_news'
}
var conn;
//连接数据库
function handleDisconnect(){
    conn = mq.createConnection(db_conf);
    conn.connect(function(err){
        if(err)
        {//如果连接错误
           console.log('error when connecting to db:', err);  
           setTimeout(handleDisconnect, 2000);   
        }
});

//监听数据库连接错误
conn.on('error',function(err){
       console.log('db error', err);
       if(err.code = 'PROTOCOL_CONNECTION_LOST')
       {
        handleDisconnect();
       }
       else
       {
        throw err;
       }
});
}
handleDisconnect();//打开连接mysql

//查询 无回调
function getAllUser(id){
    var sql = 'select * from subscriber where id > '+ conn.escape(id);
    conn.query(sql,function(err,results){
         console.log(results);
         return results;//此处return没用 是没返回值的
    });
}


/**
 查询 有回调
 获得domain
 type默认domain
 value 默认为空
 var dataStr = JSON.stringify(results);将json对象装换成json数据
*/
function getAlldomain(type,value,callback){
    var sql = 'select id,domain from domain ';
    var option = new Array();
    var dataStr= "";
    conn.query(sql,function(err,results){
        //处理查询结果
        if(results){
            for(var i = 0; i < results.length; i++)
            {
                //option[i] = {'label':results[i].domain,'value':results[i].domain};
                //console.log(results[i].domain);
                option.push({'label':results[i].domain,'value':results[i].domain});
            }
        }
        callback(err, option);//回调函数返回option数组
    });
}

/**
 插入数据库 有回调函数 有返回值的
 新增用户 注册用户
 username:用户名
 domain:域名
 password:密码
 email_address:邮箱
*/
function reg_user(datas,callback){
      //设置插入的值
      var post    = {
                                 username: datas.username, 
                                 password:datas.password,
                                 email_address:datas.email,
                                 ha1:"",
                                 ha1b:""
                            }; 
        var sql     = "insert into subscriber set ? ";//插入数据库的sql
        //新增用户,插入数据库
        var user_id = 0;
        var query = conn.query(sql,post,function(err,results){
                //处理返回的结果,如果新增用户成功
                if(results)
                {
                    console.log(results);
                    user_id  = results.insertId;
                }
                console.log('新增用户id:'+user_id);
                callback(err, user_id);//回调函数 返回user_id
        })
        //console.log(query.sql);
}


/**
    调用方法 获取查询后的值 需要用到回调函数
    callback = function(){};//回调函数
    getAlldomain('domain','',callback);
*/
getAlldomain('domain','',function(err,results){
        //results为调用方法的回调的成功的返回值
        var datas = {};
        datas.domian       = results;
        result.status      = 1;
        result.data        = datas;
        res.send(result);
});

你可能感兴趣的:(nodejs)