Node.js中JavaScript操作MySQL的常用方法整理

2020-06-17 07:27:53易采站长站整理

createConnection: 用于创建链接的函数. (Default: mysql.createConnection) 
    waitForConnections: 决定当没有连接池或者链接数打到最大值时pool的行为. 为true时链接会被放入队列中在可用是调用,为false时会立即返回error. (Default: true) 
    connectionLimit: 最大连接数. (Default: 10) 
    queueLimit: 连接池中连接请求的烈的最大长度,超过这个长度就会报错,值为0时没有限制. (Default: 0) 

四、连接池集群
允许不同的host链接


// create
var poolCluster = mysql.createPoolCluster();

poolCluster.add(config); // anonymous group
poolCluster.add('MASTER', masterConfig);
poolCluster.add('SLAVE1', slave1Config);
poolCluster.add('SLAVE2', slave2Config);

// Target Group : ALL(anonymous, MASTER, SLAVE1-2), Selector : round-robin(default)
poolCluster.getConnection(function (err, connection) {});

// Target Group : MASTER, Selector : round-robin
poolCluster.getConnection('MASTER', function (err, connection) {});

// Target Group : SLAVE1-2, Selector : order
// If can't connect to SLAVE1, return SLAVE2. (remove SLAVE1 in the cluster)
poolCluster.on('remove', function (nodeId) {
console.log('REMOVED NODE : ' + nodeId); // nodeId = SLAVE1
});

poolCluster.getConnection('SLAVE*', 'ORDER', function (err, connection) {});

// of namespace : of(pattern, selector)
poolCluster.of('*').getConnection(function (err, connection) {});

var pool = poolCluster.of('SLAVE*', 'RANDOM');
pool.getConnection(function (err, connection) {});
pool.getConnection(function (err, connection) {});

// destroy
poolCluster.end();

链接集群的可选参数

canRetry: 值为true时,允许连接失败时重试(Default: true) 
    removeNodeErrorCount: 当连接失败时 errorCount 值会增加. 当errorCount 值大于 removeNodeErrorCount 将会从PoolCluster中删除一个节点. (Default: 5)  

    defaultSelector: 默认选择器. (Default: RR) 
        RR: 循环. (Round-Robin) 
        RANDOM: 通过随机函数选择节点. 
        ORDER: 无条件地选择第一个可用节点. 

五、切换用户/改变连接状态

Mysql允许在比断开连接的的情况下切换用户  


connection.changeUser({user : 'john'}, function(err) {
if (err) throw err;
});

参数  

    user: 新的用户 (默认为早前的一个). 
    password: 新用户的新密码 (默认为早前的一个).