influx
- Version 5.9.3
- Published
- 158 kB
- No dependencies
- MIT license
Install
npm i influx
yarn add influx
pnpm add influx
Overview
InfluxDB Client
Index
Variables
Functions
Classes
InfluxDB
- addSchema()
- alterRetentionPolicy()
- createContinuousQuery()
- createDatabase()
- createRetentionPolicy()
- createUser()
- dropContinuousQuery()
- dropDatabase()
- dropMeasurement()
- dropRetentionPolicy()
- dropSeries()
- dropShard()
- dropUser()
- getDatabaseNames()
- getMeasurements()
- getSeries()
- getUsers()
- grantAdminPrivilege()
- grantPrivilege()
- parsePoint()
- ping()
- query()
- queryRaw()
- revokeAdminPrivilege()
- revokePrivilege()
- setPassword()
- showContinousQueries()
- showRetentionPolicies()
- showShards()
- writeMeasurement()
- writePoints()
Interfaces
Enums
Type Aliases
Variables
variable escape
const escape: { measurement: (val: string) => string; quoted: (val: string) => string; stringLit: (val: string) => string; tag: (val: string) => string;};
TagEscaper escapes tag keys, tag values, and field keys. {Object} {function(s: string): string } quoted Escapes and wraps quoted values, such as database names. {function(s: string): string } stringLit Escapes and wraps string literals. {function(s: string): string } measurement Escapes measurement names on the line protocol. {function(s: string): string } tag Escapes tag keys, take values, and field keys on the line protocol.
Example 1
console.log(escape.quoted('my_"db')); // => "my_"db" console.log(escape.stringLit('hello'world')); // => 'hello'world'
console.log(escape.measurement('my measurement')); // => my\ measurement console.log(escape.tag('my tag=')); // => my\ tag=
variable Precision
const Precision: Readonly<{ Hours: string; Microseconds: string; Milliseconds: string; Minutes: string; Nanoseconds: string; Seconds: string;}>;
Precision is a map of available Influx time precisions. {Object.<String, String>}
Example 1
console.log(Precision.Hours); // => 'h' console.log(Precision.Minutes); // => 'm' console.log(Precision.Seconds); // => 's' console.log(Precision.Milliseconds); // => 'ms' console.log(Precision.Microseconds); // => 'u' console.log(Precision.Nanoseconds); // => 'n'
Functions
function parseMeasurement
parseMeasurement: (q: measurement) => string;
function parseWhere
parseWhere: (q: where) => string;
function toNanoDate
toNanoDate: (timestamp: string) => INanoDate;
Covers a nanoseconds unix timestamp to a INanoDate for node-influx. The timestamp is provided as a string to prevent precision loss.
Please see [A Moment for Times](https://node-influx.github.io/manual/ usage.html#a-moment-for-times) for a more complete and eloquent explanation of time handling in this module.
Parameter timestamp
Example 1
const date = toNanoDate('1475985480231035600')
// You can use the returned Date as a normal date: expect(date.getTime()).to.equal(1475985480231);
// We decorate it with two additional methods to read // nanosecond-precision results: expect(date.getNanoTime()).to.equal('1475985480231035600'); expect(date.toNanoISOString()).to.equal('2016-10-09T03:58:00.231035600Z');
Classes
class Expression
class Expression implements IExpressionHead, IExpressionTail, IBinaryOp {}
Expression is used to build filtering expressions, like those used in WHERE clauses. It can be used for fluent and safe building of queries using untrusted input.
Example 1
e => e .field('host').equals.value('ares.peet.io') .or .field('host').matches(/example.com$/) .or .expr(e => e .field('country').equals.value('US') .and .field('state').equals.value('WA'));
// Generates: // "host" = 'ares.peet.io' OR "host" ~= /example.com$/ OR \ // ("county" = 'US' AND "state" = 'WA')
property and
readonly and: Expression;
Chains on an AND clause to the expression.
property div
readonly div: Expression;
Chains on a
/
operator to the expression.
property doesntMatch
readonly doesntMatch: Expression;
Chains on a
!
` conditional to the expression to match regexes.
property equals
readonly equals: Expression;
Chains on a
=
conditional to the expression.
property gt
readonly gt: Expression;
Chains on a
>
conditional to the expression.
property gte
readonly gte: Expression;
Chains on a
>=
conditional to the expression.
property lt
readonly lt: Expression;
Chains on a
<
conditional to the expression.
property lte
readonly lte: Expression;
Chains on a
<=
conditional to the expression.
property matches
readonly matches: Expression;
Chains on a
=~
conditional to the expression to match regexes.
property minus
readonly minus: Expression;
Chains on a
-
operator to the expression.
property notEqual
readonly notEqual: Expression;
Chains on a
!=
conditional to the expression.
property or
readonly or: Expression;
Chains on an OR clause to the expression.
property plus
readonly plus: Expression;
Chains on a
+
operator to the expression.
property times
readonly times: Expression;
Chains on a
*
operator to the expression.
method exp
exp: (fn: (e: Expression) => Expression) => this;
Inserts a subexpression; invokes the function with a new expression that can be chained on.
Parameter fn
Example 1
e.field('a').equals.value('b') .or.expr(e => e.field('b').equals.value('b') .and.field('a').equals.value('c')) .toString() // "a" = 'b' OR ("b" = 'b' AND "a" = 'c')
method field
field: (name: string) => this;
Inserts a field reference into the expression; the name will be automatically escaped.
Parameter name
method tag
tag: (name: string) => this;
Inserts a tag reference into the expression; the name will be automatically escaped.
Parameter name
method toString
toString: () => string;
Converts the expression into its InfluxQL representation.
method value
value: (value: any) => this;
Value chains on a value to the expression.
- Numbers will be inserted verbatim - Strings will be escaped and inserted - Booleans will be inserted correctly - Dates will be formatted and inserted correctly, including INanoDates. - Regular expressions will be inserted correctly, however an error will be thrown if they contain flags, as regex flags do not work in Influx - Otherwise we'll try to call
.toString()
on the value, throwing if we cannot do so.Parameter value
class InfluxDB
class InfluxDB {}
InfluxDB is the public interface to run queries against your database. This is a 'driver-level' module, not a a full-fleged ORM or ODM; you run queries directly by calling methods on this class.
Please check out some of [the tutorials](https://node-influx.github.io/manual/tutorial.html) if you want help getting started!
Example 1
const Influx = require('influx'); const influx = new Influx.InfluxDB({ host: 'localhost', database: 'express_response_db', schema: [ { measurement: 'response_times', fields: { path: Influx.FieldType.STRING, duration: Influx.FieldType.INTEGER }, tags: [ 'host' ] } ] })
Example 2
// Connect over HTTPS const Influx = require('influx'); const influx = new Influx.InfluxDB({ host: 'myinfluxdbhost', port: 443, protocol: 'https' database: 'express_response_db', schema: [ { measurement: 'response_times', fields: { path: Influx.FieldType.STRING, duration: Influx.FieldType.INTEGER }, tags: [ 'host' ] } ] })
influx.writePoints([ { measurement: 'response_times', tags: { host: os.hostname() }, fields: { duration, path: req.path }, } ]).then(() => { return influx.query(` select * from response_times where host = $ order by time desc limit 10 `, { placeholders: { host: os.hostname() } }) }).then(rows => { rows.forEach(row => console.log(
A request to ${row.path} took ${row.duration}ms
)) })
constructor
constructor(options: ISingleHostConfig);
constructor
constructor(options: IClusterConfig);
Connect to an InfluxDB cluster by specifying a set of connection options.
constructor
constructor(url: string);
Connect to an InfluxDB instance using a configuration URL.
Example 1
new InfluxDB('http://user:password@host:8086/database')
constructor
constructor();
Connects to a local, default Influx instance.
method addSchema
addSchema: (schema: ISchemaOptions) => void;
Adds specified schema for better fields coercing.
Parameter schema
InfluxDB
method alterRetentionPolicy
alterRetentionPolicy: ( name: string, options: IRetentionOptions) => Promise<void>;
Alters an existing retention policy on a database.
Parameter name
The retention policy name
Parameter options
Parameter
[options.database] Database to create the policy on, uses the default database if not provided.
Parameter
options.duration How long data in the retention policy should be stored for, should be in a format like
7d
. See details [here](https://docs.influxdata.com/influxdb/v1.0/query_language/spec/#durations)Parameter
options.replication How many servers data in the series should be replicated to.
Parameter
[options.default] Whether the retention policy should be the default policy on the database.
Example 1
influx.alterRetentionPolicy('7d', { duration: '7d', replication: 1, default: true })
method createContinuousQuery
createContinuousQuery: ( name: string, query: string, database?: string, resample?: string) => Promise<void>;
Creates a continuous query in a database
Parameter name
The query name, for later reference
Parameter query
The body of the query to run
Parameter database
If not provided, uses the default database.
Parameter resample
If provided, adds resample policy
Example 1
influx.createContinuousQuery('downsample_cpu_1h', ` SELECT MEAN(cpu) INTO "7d"."perf" FROM "1d"."perf" GROUP BY time(1m) `, undefined, 'RESAMPLE FOR 7m')
method createDatabase
createDatabase: (databaseName: string) => Promise<void>;
Creates a new database with the provided name.
Parameter databaseName
Example 1
influx.createDatabase('mydb')
method createRetentionPolicy
createRetentionPolicy: ( name: string, options: IRetentionOptions) => Promise<void>;
Creates a new retention policy on a database. You can read more about [Downsampling and Retention](https://docs.influxdata.com/influxdb/v1.0/ guides/downsampling_and_retention/) on the InfluxDB website.
Parameter name
The retention policy name
Parameter options
Parameter
[options.database] Database to create the policy on, uses the default database if not provided.
Parameter
options.duration How long data in the retention policy should be stored for, should be in a format like
7d
. See details [here](https://docs.influxdata.com/influxdb/v1.0/query_language/spec/#durations)Parameter
options.replication How many servers data in the series should be replicated to.
Parameter
[options.isDefault] Whether the retention policy should be the default policy on the database.
Example 1
influx.createRetentionPolicy('7d', { duration: '7d', replication: 1 })
method createUser
createUser: ( username: string, password: string, admin?: boolean) => Promise<void>;
Creates a new InfluxDB user.
Parameter username
Parameter password
Parameter admin
If true, the user will be given all privileges on all databases.
Example 1
influx.createUser('connor', 'pa55w0rd', true) // make 'connor' an admin
// make non-admins: influx.createUser('not_admin', 'pa55w0rd')
method dropContinuousQuery
dropContinuousQuery: (name: string, database?: string) => Promise<void>;
Creates a continuous query in a database
Parameter name
The query name
Parameter database
If not provided, uses the default database.
Example 1
influx.dropContinuousQuery('downsample_cpu_1h')
method dropDatabase
dropDatabase: (databaseName: string) => Promise<void>;
Deletes a database with the provided name.
Parameter databaseName
Example 1
influx.dropDatabase('mydb')
method dropMeasurement
dropMeasurement: (measurement: string, database?: string) => Promise<void>;
Removes a measurement from the database.
Parameter measurement
Parameter database
the database the measurement lives in, optional if a default database is provided.
Example 1
influx.dropMeasurement('my_measurement')
method dropRetentionPolicy
dropRetentionPolicy: (name: string, database?: string) => Promise<void>;
Deletes a retention policy and associated data. Note that the data will not be immediately destroyed, and will hang around until Influx's bi-hourly cron.
Parameter name
The retention policy name
Parameter database
Database name that the policy lives in, uses the default database if not provided.
Example 1
influx.dropRetentionPolicy('7d')
method dropSeries
dropSeries: ( options: b.measurement | b.where | { database: string }) => Promise<void>;
Removes a one or more series from InfluxDB.
Returns
Example 1
// The following pairs of queries are equivalent: you can chose either to // use our builder or pass in string directly. The builder takes care // of escaping and most syntax handling for you.
influx.dropSeries({ where: e => e.tag('cpu').equals.value('cpu8') }) influx.dropSeries({ where: '"cpu" = 'cpu8'' }) // DROP SERIES WHERE "cpu" = 'cpu8'
influx.dropSeries({ measurement: m => m.name('cpu').policy('autogen') }) influx.dropSeries({ measurement: '"cpu"."autogen"' }) // DROP SERIES FROM "autogen"."cpu"
influx.dropSeries({ measurement: m => m.name('cpu').policy('autogen'), where: e => e.tag('cpu').equals.value('cpu8'), database: 'my_db' }) // DROP SERIES FROM "autogen"."cpu" WHERE "cpu" = 'cpu8'
method dropShard
dropShard: (shard_id: number) => Promise<void>;
Drops a shard with the provided number.
Parameter shard_id
Example 1
influx.dropShard(3)
method dropUser
dropUser: (username: string) => Promise<void>;
Removes a user from the database.
Parameter username
Example 1
influx.dropUser('connor')
method getDatabaseNames
getDatabaseNames: () => Promise<string[]>;
Returns array of database names. Requires cluster admin privileges.
Returns
a list of database names
Example 1
influx.getDatabaseNames().then(names => console.log('My database names are: ' + names.join(', ')));
method getMeasurements
getMeasurements: (database?: string) => Promise<string[]>;
Returns array of measurements.
Parameter database
the database the measurement lives in, optional if a default database is provided.
Returns
a list of measurement names
Example 1
influx.getMeasurements().then(names => console.log('My measurement names are: ' + names.join(', ')));
method getSeries
getSeries: (options?: { measurement?: string; database?: string;}) => Promise<string[]>;
Returns a list of all series within the target measurement, or from the entire database if a measurement isn't provided.
Parameter options
Parameter
[options.measurement] if provided, we'll only get series from within that measurement.
Parameter
[options.database] the database the series lives in, optional if a default database is provided.
Returns
a list of series names
Example 1
influx.getSeries().then(names => { console.log('My series names in my_measurement are: ' + names.join(', ')) })
influx.getSeries({ measurement: 'my_measurement', database: 'my_db' }).then(names => { console.log('My series names in my_measurement are: ' + names.join(', ')) })
method getUsers
getUsers: () => Promise<IResults<{ user: string; admin: boolean }>>;
Returns a list of users on the Influx database.
Example 1
influx.getUsers().then(users => { users.forEach(user => { if (user.admin) { console.log(user.user, 'is an admin!') } else { console.log(user.user, 'is not an admin!') } }) })
method grantAdminPrivilege
grantAdminPrivilege: (username: string) => Promise<void>;
Grants admin privileges to a specified user.
Parameter username
Example 1
influx.grantAdminPrivilege('connor')
method grantPrivilege
grantPrivilege: ( username: string, privilege: 'READ' | 'WRITE', database?: string) => Promise<void>;
Grants a privilege to a specified user.
Parameter username
Parameter privilege
Should be one of 'READ' or 'WRITE'
Parameter database
If not provided, uses the default database.
Example 1
influx.grantPrivilege('connor', 'READ', 'my_db') // grants read access on my_db to connor
method parsePoint
parsePoint: (point: IPoint, options?: IParseOptions) => IParsedPoint;
ParsePoint will perform the coercions/schema checks and return the data required for writing a point. This will throw an error if a schema check or coercion fails. This can be useful for flagging or "throwing out" bad points in a batch write to prevent the entire batch from getting aborted
---
A note when using this function, InfluxDB#writePoints will still perform the same checks, so any pre-processed data will be checked for validity twice which has potential performance implications on large data sets
Parameter point
Parameter options
Example 1
// parse a point as if it is getting written to the default // databse with the default time precision influx.parsePoint({ measurement: 'perf', tags: { host: 'box1.example.com' }, fields: { cpu: getCpuUsage(), mem: getMemUsage() }, })
// you can manually specify the database and time precision influx.parsePoint({ measurement: 'perf', tags: { host: 'box1.example.com' }, fields: { cpu: getCpuUsage(), mem: getMemUsage() }, }, { precision: 's', database: 'my_db' })
// if an error occurs, you can catch the error with try...catch try { influx.parsePoint({ measurement: 'perf', tags: { host: 'box1.example.com', myExtraneousTag: 'value' }, fields: { cpu: getCpuUsage(), mem: getMemUsage(), myExtraneousField: 'value' }, }) } catch(err) { handleError(err); }
method ping
ping: (timeout: number) => Promise<IPingStats[]>;
Pings all available hosts, collecting online status and version info.
Parameter timeout
Given in milliseconds
Example 1
influx.ping(5000).then(hosts => { hosts.forEach(host => { if (host.online) { console.log(
${host.url.host} responded in ${host.rtt}ms running ${host.version})
) } else { console.log(${host.url.host} is offline :(
) } }) })
method query
query: { <T>(query: string[], options?: IQueryOptions): Promise<Array<IResults<T>>>; <T>(query: string, options?: IQueryOptions): Promise<IResults<T>>;};
method queryRaw
queryRaw: (query: string | string[], options?: IQueryOptions) => Promise<any>;
QueryRaw functions similarly to .query() but it does no fancy transformations on the returned data; it calls
JSON.parse
and returns those results verbatim.Parameter query
Parameter options
Example 1
influx.queryRaw('select * from perf').then(rawData => { console.log(rawData) })
method revokeAdminPrivilege
revokeAdminPrivilege: (username: string) => Promise<void>;
Removes a admin privilege from a specified user.
Parameter username
Example 1
influx.revokeAdminPrivilege('connor')
method revokePrivilege
revokePrivilege: ( username: string, privilege: 'READ' | 'WRITE', database?: string) => Promise<void>;
Removes a privilege from a specified user.
Parameter username
Parameter privilege
Should be one of 'READ' or 'WRITE'
Parameter database
If not provided, uses the default database.
Example 1
influx.revokePrivilege('connor', 'READ', 'my_db') // removes read access on my_db from connor
method setPassword
setPassword: (username: string, password: string) => Promise<void>;
Sets a password for an Influx user.
Parameter username
Parameter password
Example 1
influx.setPassword('connor', 'pa55w0rd')
method showContinousQueries
showContinousQueries: ( database?: string) => Promise<IResults<{ name: string; query: string }>>;
Returns a list of continous queries in the database.
Parameter database
If not provided, uses the default database.
Example 1
influx.showContinousQueries()
method showRetentionPolicies
showRetentionPolicies: ( database?: string) => Promise< IResults<{ default: boolean; duration: string; name: string; replicaN: number; shardGroupDuration: string; }>>;
Shows retention policies on the database
Parameter database
The database to list policies on, uses the default database if not provided.
Example 1
influx.showRetentionPolicies().then(policies => { expect(policies.slice()).to.deep.equal([ { name: 'autogen', duration: '0s', shardGroupDuration: '168h0m0s', replicaN: 1, default: true, }, { name: '7d', duration: '168h0m0s', shardGroupDuration: '24h0m0s', replicaN: 1, default: false, }, ]) })
method showShards
showShards: ( database?: string) => Promise< Array<{ id: number; database: string; retention_policy: string; shard_group: number; start_time: string; end_time: string; expiry_time: string; owners: string; }>>;
Shows shards on the database
Parameter database
The database to list policies on, uses the default database if not provided.
Example 1
influx.showShards().then(shards => { expect(shards.slice()).to.deep.equal([ { id: 1 database: 'database', retention_policy: 'autogen', shard_group: 1, start_time: '2019-05-06T00:00:00Z', end_time: '2019-05-13T00:00:00Z', expiry_time: '2019-05-13T00:00:00Z', owners: null, }, ]) })
method writeMeasurement
writeMeasurement: ( measurement: string, points: IPoint[], options?: IWriteOptions) => Promise<void>;
WriteMeasurement functions similarly to InfluxDB#writePoints, but it automatically fills in the
measurement
value for all points for you.Parameter measurement
Parameter points
Parameter options
Example 1
influx.writeMeasurement('perf', [ { tags: { host: 'box1.example.com' }, fields: { cpu: getCpuUsage(), mem: getMemUsage() }, } ])
method writePoints
writePoints: (points: IPoint[], options?: IWriteOptions) => Promise<void>;
WritePoints sends a list of points together in a batch to InfluxDB. In each point you must specify the measurement name to write into as well as a list of tag and field values. Optionally, you can specify the time to tag that point at, defaulting to the current time.
If you defined a schema for the measurement in the options you passed to
new Influx(options)
, we'll use that to make sure that types get cast correctly and that there are no extraneous fields or columns.For best performance, it's recommended that you batch your data into sets of a couple thousand records before writing it. In the future we'll have some utilities within node-influx to make this easier.
---
A note when using manually-specified times and precisions: by default we write using the
ms
precision since that's what JavaScript gives us. You can adjust this. However, there is some special behaviour if you manually specify a timestamp in your points: - if you specify the timestamp as a Date object, we'll convert it to milliseconds and manipulate it as needed to get the right precision - if provide a INanoDate as returned from toNanoTime or the results from an Influx query, we'll be able to pull the precise nanosecond timestamp and manipulate it to get the right precision - if you provide a string or number as the timestamp, we'll pass it straight into Influx.Please see the IPoint and IWriteOptions types for a full list of possible options.
Parameter points
Parameter options
Example 1
// write a point into the default database with // the default retention policy. influx.writePoints([ { measurement: 'perf', tags: { host: 'box1.example.com' }, fields: { cpu: getCpuUsage(), mem: getMemUsage() }, } ])
// you can manually specify the database, // retention policy, and time precision: influx.writePoints([ { measurement: 'perf', tags: { host: 'box1.example.com' }, fields: { cpu: getCpuUsage(), mem: getMemUsage() }, timestamp: getLastRecordedTime(), } ], { database: 'my_db', retentionPolicy: '1d', precision: 's' })
class Measurement
class Measurement {}
Measurement creates a reference to a particular measurement. You can reference it solely by its name, but you can also specify the retention policy and database it lives under.
Example 1
m.name('my_measurement') // "my_measurement" m.name('my_measurement').policy('one_day') // "one_day"."my_measurement" m.name('my_measurement').policy('one_day').db('mydb') // "mydb"."one_day"."my_measurement"
method db
db: (db: string) => this;
Sets the database name.
Parameter db
method name
name: (name: string) => this;
Sets the measurement name.
Parameter name
method policy
policy: (retentionPolicy: string) => this;
Sets the retention policy name.
Parameter retentionPolicy
method toString
toString: () => string;
Converts the measurement into its InfluxQL representation.
Throws
{Error} if a measurement name is not provided
class Raw
class Raw {}
You can provide Raw values to Influx methods to prevent it from escaping your provided string.
Example 1
influx.createDatabase(new Influx.Raw('This won't be escaped!'));
constructor
constructor(value: string);
Wraps a string so that it is not escaped in Influx queries.
Parameter value
Example 1
influx.createDatabase(new Influx.Raw('This won't be escaped!'));
method getValue
getValue: () => string;
Returns the wrapped string.
class ResultError
class ResultError extends Error {}
A ResultError is thrown when a query generates errorful results from Influx.
constructor
constructor(message: string);
Interfaces
interface IBaseExpression
interface IBaseExpression<T> {}
property field
field: (name: string) => T;
Inserts a field name in the expression.
property tag
tag: (name: string) => T;
Inserts a tag name in the expression.
property value
value: (value: any) => T;
Chains on a value to the expression. An error will be thrown if the value is a type we can't represent in InfluxQL, primarily
null
orundefined.
interface IBinaryOp
interface IBinaryOp {}
property and
and: IExpressionTail;
Adds an 'AND' operator
property div
div: IExpressionTail;
Adds a '/' division symbol
property doesntMatch
doesntMatch: IExpressionTail;
Adds a '!~' comparator to select entries not matching a regex.
property equals
equals: IExpressionTail;
Adds a '=' symbol
property gt
gt: IExpressionTail;
Adds a '>' symbol
property gte
gte: IExpressionTail;
Adds a '>=' symbol
property lt
lt: IExpressionTail;
Adds a '<' symbol
property lte
lte: IExpressionTail;
Adds a '<=' symbol
property matches
matches: IExpressionTail;
Adds a '=~' comparator to select entries matching a regex.
property minus
minus: IExpressionTail;
Adds a '-' subtraction symbol
property notEqual
notEqual: IExpressionTail;
Adds a '!=' comparator to select entries not equaling a certain value.
property or
or: IExpressionTail;
Adds an 'OR' operator
property plus
plus: IExpressionTail;
Adds a '+' addition symbol
property times
times: IExpressionTail;
Adds a '*' multiplication symbol
interface IClusterConfig
interface IClusterConfig {}
property database
database?: string;
Default database to write information to.
property hosts
hosts: IHostConfig[];
A list of cluster hosts to connect to.
property password
password?: string;
Password for connecting to the database. Defaults to 'root'.
property pool
pool?: IPoolOptions;
Settings for the connection pool.
property schema
schema?: ISchemaOptions[];
A list of schema for measurements in the database.
property username
username?: string;
Username for connecting to the database. Defaults to 'root'.
interface IExpressionHead
interface IExpressionHead extends IBaseExpression<IBinaryOp> {}
interface IExpressionTail
interface IExpressionTail extends IBaseExpression<IExpressionHead> {}
interface IHostConfig
interface IHostConfig {}
property host
host?: string;
Influx host to connect to, defaults to 127.0.0.1.
property options
options?: RequestOptions;
Optional request option overrides.
property path
path?: string;
Path for Influx within the host, defaults to ''. May be used if Influx is behind a reverse proxy or load balancer.
property port
port?: number;
Influx port to connect to, defaults to 8086.
property protocol
protocol?: 'http' | 'https';
Protocol to connect over, defaults to 'http'.
interface INanoDate
interface INanoDate extends Date {}
property getNanoTime
getNanoTime: () => string;
Returns the unix nanoseconds timestamp as a string.
property toNanoISOString
toNanoISOString: () => string;
Formats the date as an ISO RFC3339 timestamp with nanosecond precision.
interface IParsedPoint
interface IParsedPoint extends IPoint {}
property castedTimestamp
castedTimestamp?: string;
Casted Timestamp is the timestamp value after being casted to the desired precision. Default 'n'
property fieldsPairs
fieldsPairs: Array<[string, string]>;
Fields Pairs is the list of key/value pairs for each field on the point
property tagsNames
tagsNames: string[];
Tags Names is the list of tag names in the point
interface IParseOptions
interface IParseOptions {}
interface IPingStats
interface IPingStats {}
interface IPoint
interface IPoint {}
property fields
fields?: { [name: string]: any;};
Fields is the list of field values to insert.
property measurement
measurement?: string;
Measurement is the Influx measurement name.
property tags
tags?: { [name: string]: string;};
Tags is the list of tag values to insert.
property timestamp
timestamp?: Date | string | number;
Timestamp tags this measurement with a date. This can be a Date object, in which case we'll adjust it to the desired precision, or a numeric string or number, in which case it gets passed directly to Influx.
interface IPoolOptions
interface IPoolOptions {}
property backoff
backoff?: IBackoffStrategy;
Options to configure the backoff policy for the pool. Defaults to using exponential backoff.
property maxRetries
maxRetries?: number;
Number of times we should retry running a query before calling back with an error.
property requestTimeout
requestTimeout?: number;
The length of time after which HTTP requests will error if they do not receive a response.
interface IQueryOptions
interface IQueryOptions {}
property database
database?: string;
Database under which to query the points. This is required if a default database is not provided in Influx.
property placeholders
placeholders?: Record<string, string | number>;
Any placeholders used by the query. Using these is strongly recommended to avoid injection attacks.
property precision
precision?: grammar.TimePrecision;
Defines the precision at which to query points. When left blank, it will query in nanosecond precision.
property retentionPolicy
retentionPolicy?: string;
Retention policy to query from, defaults to the DEFAULT database policy.
interface IResponse
interface IResponse {}
InfluxResults describes the result structure received from InfluxDB.
NOTE: if you're poking around in Influx, use curl, not the
json
formatter provided by the CLI. As of 1.0 this formatter changes the result structure and it will confuse you, as it did me ;)
property results
results: IResultEntry[];
interface IResults
interface IResults<T> extends Array<T> {}
IResultsParser is a user-friendly results tables from raw Influx responses.
property group
group: (matcher: Tags) => T[];
Group looks for and returns the first group in the results that matches the provided tags.
If you've used lodash or underscore, we do something quite similar to their object matching: for every row in the results, if it contains tag values matching the requested object, we return it.
Parameter matcher
Example 1
// Matching tags sets in queries: influx.query('select * from perf group by host').then(results => { expect(results.group({ host: 'ares.peet.io'})).to.deep.equal([ { host: 'ares.peet.io', cpu: 0.12, mem: 2435 }, { host: 'ares.peet.io', cpu: 0.10, mem: 2451 }, // ... ])
expect(results.group({ host: 'box1.example.com'})).to.deep.equal([ { host: 'box1.example.com', cpu: 0.54, mem: 8420 }, // ... ]) })
property groups
groups: () => Array<{ name: string; tags: Tags; rows: T[];}>;
Returns the data grouped into nested arrays, similarly to how it was returned from Influx originally.
Returns
Example 1
influx.query('select * from perf group by host').then(results => { expect(results.groups()).to.deep.equal([ { name: 'perf', tags: { host: 'ares.peet.io' }, rows: [ { host: 'ares.peet.io', cpu: 0.12, mem: 2435 }, { host: 'ares.peet.io', cpu: 0.10, mem: 2451 }, // ... ] } { name: 'perf', tags: { host: 'box1.example.com' }, rows: [ { host: 'box1.example.com', cpu: 0.54, mem: 8420 }, // ... ] } ]) })
interface IRetentionOptions
interface IRetentionOptions {}
IRetentionOptions are passed into passed into the InfluxDB#createRetentionPolicy and InfluxDB#alterRetentionPolicy. See the [Downsampling and Retention page](https://docs.influxdata.com/ influxdb/v1.0/guides/downsampling_and_retention/) on the Influx docs for more information.
property database
database?: string;
property duration
duration: string;
property isDefault
isDefault?: boolean;
property replication
replication: number;
interface ISchemaOptions
interface ISchemaOptions {}
property database
database?: string;
The database the measurement lives under. Uses the default database if one is provided.
property fields
fields: { [column: string]: FieldType;};
Columns is the map of column type definitions on the database.
property measurement
measurement: string;
The measurement name this schema is describing.
property tags
tags: string[];
A list of schema tag names.
interface ISingleHostConfig
interface ISingleHostConfig extends IHostConfig {}
property database
database?: string;
Default database to write information to.
property password
password?: string;
Password for connecting to the database. Defaults to 'root'.
property pool
pool?: IPoolOptions;
Settings for the connection pool.
property schema
schema?: ISchemaOptions[];
A list of schema for measurements in the database.
property username
username?: string;
Username for connecting to the database. Defaults to 'root'.
interface IStringable
interface IStringable {}
property toString
toString: () => string;
interface IWriteOptions
interface IWriteOptions {}
property database
database?: string;
Database under which to write the points. This is required if a default database is not provided in Influx.
property precision
precision?: grammar.TimePrecision;
Precision at which the points are written, defaults to nanoseconds 'n'.
property retentionPolicy
retentionPolicy?: string;
Retention policy to write the points under, defaults to the DEFAULT database policy.
Enums
enum FieldType
enum FieldType { FLOAT = 0, INTEGER = 1, STRING = 2, BOOLEAN = 3,}
FieldType is an enumeration of InfluxDB field data types. {Number} FieldType
Example 1
import { FieldType } from 'influx'; // or const FieldType = require('influx').FieldType
const schema = { measurement: 'my_measurement', fields: { my_int: FieldType.INTEGER, my_float: FieldType.FLOAT, my_string: FieldType.STRING, my_boolean: FieldType.BOOLEAN, } }
Type Aliases
type measurement
type measurement = { measurement: string | ((m: Measurement) => IStringable);};
type TimePrecision
type TimePrecision = 'n' | 'u' | 'ms' | 's' | 'm' | 'h';
type where
type where = { where: string | ((e: IExpressionHead) => IStringable);};
Package Files (8)
Dependencies (0)
No dependencies.
Dev Dependencies (34)
- @types/chai
- @types/freeport
- @types/mocha
- @types/node
- @types/sinon
- @types/sinon-chai
- awesome-typescript-loader
- chai
- coveralls
- esdoc
- esdoc-standard-plugin
- freeport
- istanbul
- json-loader
- karma
- karma-chrome-launcher
- karma-mocha
- karma-mocha-reporter
- karma-sourcemap-loader
- karma-webpack
- lodash
- mocha
- node-fetch
- npm-run-all
- open-cli
- prettier
- puppeteer
- semantic-release
- sinon
- sinon-chai
- stream-http
- ts-node
- typescript
- webpack
Peer Dependencies (0)
No peer dependencies.
Badge
To add a badge like this oneto your package's README, use the codes available below.
You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/influx
.
- Markdown[![jsDocs.io](https://img.shields.io/badge/jsDocs.io-reference-blue)](https://www.jsdocs.io/package/influx)
- HTML<a href="https://www.jsdocs.io/package/influx"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>
- Updated .
Package analyzed in 3545 ms. - Missing or incorrect documentation? Open an issue for this package.