An InfluxDB Node.js Client
$ npm install influxdb-nodejs
View the ./examples directory for working examples.
const Influx = require('influxdb-nodejs');
const client = new Influx({
username: 'root',
password: 'root',
timePrecision: 'ms',
host: 'localhost',
port: 8086,
protocol: 'http',
database: 'mydb'
});
-
username
username -
password
password -
timePrecision
time precision, default:ms
-
host
influxdb server host, default:localhost
-
port
influxdb server port, default:8086
-
protocol
protocol, default:http
-
database
database name
const Influx = require('influxdb-nodejs');
const client = new Influx('http://user:pass@localhost:port,anotherhost:port,yetanother:port/mydatabase');
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
client.createDatabase().then(() => {
console.info('create database:mydb success');
}).catch(err => {
console.error(err);
});
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
client.createDatabaseNotExists().then(() => {
console.info('create database:mydb success');
}).catch(err => {
console.error(err);
});
drop data when is exists
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
client.dropDatabase().then(() => {
console.info('drop database:mydb success');
}).catch(err => {
console.error(err);
});
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
client.getMeasurements().then(data => {
console.info(data);
}).catch(err => {
console.error(err);
});
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
client.dropMeasurement('http').then(data => {
console.info(data);
}).catch(err => {
console.error(err);
});
const Influx = require('influxdb-nodejs');
const client = new Influx('http://user:pass@192.168.1.1:8086,192.168.1.2:8086,192.168.1.3:9086/mydatabase');
console.dir(client.availableServers); //[{"host": "192.168.1.1", "port": 8086}, ...]
const Influx = require('influxdb-nodejs');
const client = new Influx('http://user:pass@192.168.1.1:8086,192.168.1.2:8086,192.168.1.3:9086/mydatabase');
console.dir(client.unavailableServers); //[{"host": "192.168.1.1", "port": 8086}, ...]
get/set request timeout
const Influx = require('influxdb-nodejs');
const client = new Influx({
username: 'root',
password: 'root',
timePrecision: 'ms',
host: 'localhost',
port: 8086,
protocol: 'http',
database: 'mydb'
});
client.timeout = 1000;
console.info(client.timeout); // 1000
write point to the series, return Writer instance
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
const writer = client.write('http');
series
write point to the series
set point tags, return Writer instance
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
const writer = client.write('http');
writer.tag('uuid', '1234');
writer.tag({
status: '40x',
size: '1K'
});
-
key
tag name string or {key1: value1, key2: value2} -
value
tag value string
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
const writer = client.write('http');
writer.tag('uuid', '1234');
writer.tag({
status: '40x',
size: '1K'
});
writer.value({
code: 400,
value: 1
});
writer.value('bytes', 1010);
-
key
value name string or {key1: value1, key2: value2} -
value
value
write point to server, return promise
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
const writer = client.write('http');
writer.tag('uuid', '1234');
writer.tag({
status: '40x',
size: '1K'
});
writer.value({
code: 400,
value: 1
});
writer.value('bytes', 1010);
writer.end().then(() => {
console.info('write point success');
}).catch(err => {
console.error(err);
});
add writer instance to write queue, it will sync when call syncWrite
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
const writer = client.write('http');
writer.tag('uuid', '1234');
writer.tag({
status: '40x',
size: '1K'
});
writer.value({
code: 400,
value: 1
});
writer.value('bytes', 1010);
writer.queue();
get write queue length
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
const writer = client.write('http');
writer.tag('uuid', '1234');
writer.tag({
status: '40x',
size: '1K'
});
writer.value({
code: 400,
value: 1
});
writer.value('bytes', 1010);
writer.queue();
console.info(client.writeQueueLength); // 2
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
const writer = client.write('http');
writer.tag('uuid', '1234');
writer.tag({
status: '40x',
size: '1K'
});
writer.value({
code: 400,
value: 1
});
writer.value('bytes', 1010);
writer.queue();
client.syncWrite().catch(err => {
console.error(err);
});
get point from the series, return Reader instance
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
const reader = client.query('http');
series
get point from the series
set query tag conditions, return Reader instance
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
const reader = client.query('http');
reader.tag('status', '40x');
reader.tag({
uuid: '1234'
});
reader.end().then(data => {
console.info(data);
}).catch(err => {
console.error(err);
});
-
key
tag name string or {key1: value1, key2: value2} -
value
tag value string
get points by where conditions
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
const reader = client.query('http');
reader.where("status='40x'").end().then(data => {
console.info(data);
}).catch(err => {
console.error(err);
});
client.query('http')
.where('status =~ /50./')
.end()
.then(data => {
console.info(data);
}).catch(err => {
console.error(err);
});
conditions
string or regexp
get points group by tag
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
client.query('http')
.group('status')
.group('size')
.end()
.then(data => {
console.info(data);
}).catch(err => {
console.error(err);
});
groupTag
group tag name
get points by limit value
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
client.query('http')
.group('*')
.limit(1)
.end()
.then(data => {
console.info(data);
}).catch(err => {
console.error(err);
});
count
limit value
get points by slimit value
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
client.query('http')
.group('*')
.slimit(1)
.end()
.then(data => {
console.info(data);
}).catch(err => {
console.error(err);
});
count
slimit value
get points sort by time(asc, desc)
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
client.query('http')
.desc()
.end()
.then(data => {
console.info(data);
}).catch(err => {
console.error(err);
});
client.query('http')
.asc()
.end()
.then(data => {
console.info(data);
}).catch(err => {
console.error(err);
});
get points by offset
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
client.query('http')
.offset(1)
.end()
.then(data => {
console.info(data);
}).catch(err => {
console.error(err);
});
offset
offset value
mean points
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
client.query('http')
.mean('use')
.end()
.then(data => {
console.info(data);
}).catch(err => {
console.error(err);
});
field
mean field
sum points
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
client.query('http')
.sum('use')
.end()
.then(data => {
console.info(data);
}).catch(err => {
console.error(err);
});
count points
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
client.query('http')
.count('use')
.end()
.then(data => {
console.info(data);
}).catch(err => {
console.error(err);
});
count
count field
fill null
value with fill value
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
client.query('http')
.group('status')
.fill(1)
.tag('uuid', uuid)
.mean('value')
.end()
.then(data => {
console.info(data);
}).catch(err => {
console.error(err);
});
value
fill value
add reader instance to reader queue
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
client.query(series)
.tag('status', '40x')
.queue();
client.query(series)
.tag('status', '50x')
.queue();
client.syncQuery().then(data => {
console.info(data);
}).catch(err => {
console.error(err);
});
get all query queue points result
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
client.query(series)
.tag('status', '40x')
.queue();
client.query(series)
.tag('status', '50x')
.queue();
client.syncQuery().then(data => {
console.info(data);
}).catch(error);
get query queue length
const Influx = require('influxdb-nodejs');
const client = new Influx({
database: 'mydb'
});
client.query(series)
.tag('status', '40x')
.queue();
client.query(series)
.tag('status', '50x')
.queue();
console.info(client.queryQueueLength); // 2
MIT