Skip to content

Commit b1fa0a3

Browse files
committed
feat(poolCluster): add query method
1 parent 9d22796 commit b1fa0a3

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

lib/pool_cluster.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const process = require('process');
44

55
const Pool = require('./pool.js');
66
const PoolConfig = require('./pool_config.js');
7+
const Connection = require('./connection.js');
78
const EventEmitter = require('events').EventEmitter;
89

910
/**
@@ -46,6 +47,43 @@ class PoolNamespace {
4647
});
4748
}
4849

50+
/**
51+
* pool cluster query
52+
* @param {*} sql
53+
* @param {*} values
54+
* @param {*} cb
55+
* @returns query
56+
*/
57+
query(sql, values, cb) {
58+
const clusterNode = this._getClusterNode();
59+
const query = Connection.createQuery(sql, values, cb, {});
60+
if (clusterNode === null) {
61+
return cb(new Error('Pool does Not exists.'));
62+
}
63+
this._cluster._getConnection(clusterNode, (err, conn) => {
64+
if (err) {
65+
if (typeof query.onResult === 'function') {
66+
query.onResult(err);
67+
} else {
68+
query.emit('error', err);
69+
}
70+
return;
71+
}
72+
if (conn === 'retry') {
73+
return this.query(sql, values, cb);
74+
}
75+
try {
76+
conn.query(query).once('end', () => {
77+
conn.release();
78+
});
79+
} catch (e) {
80+
conn.release();
81+
throw e;
82+
}
83+
});
84+
return query;
85+
}
86+
4987
_getClusterNode() {
5088
const foundNodeIds = this._cluster._findNodeIds(this._pattern);
5189
if (foundNodeIds.length === 0) {

0 commit comments

Comments
 (0)