使用InfluxDB JavaScript客户端库查询
在Node.js环境中使用InfluxDB JavaScript客户端库查询InfluxDB。
以下示例向 InfluxDB 存储桶发送 Flux 查询,并输出可观察表中的行。
开始之前
查询 InfluxDB
更改为您的新项目目录并为您的查询模块创建一个文件。
cd influx-node-app && touch query.js实例化一个
InfluxDB客户端。提供您的 InfluxDB URL 和 API 令牌。使用客户端的getQueryApi()方法。提供您的 InfluxDB 组织 ID 以创建一个配置好的 查询客户端。import { InfluxDB, Point } from '@influxdata/influxdb-client' const queryApi = new InfluxDB({YOUR_URL, YOUR_API_TOKEN}).getQueryApi(YOUR_ORG)替换以下内容:
YOUR_URL: InfluxDB URLYOUR_API_TOKEN: InfluxDB API 令牌YOUR_ORG: InfluxDB 组织 ID
为你的 InfluxDB 存储桶创建一个 Flux 查询。将查询存储为字符串变量。
为了防止 SQL 注入攻击,避免将不安全的用户输入与查询连接。
const fluxQuery = 'from(bucket: "YOUR_BUCKET") |> range(start: 0) |> filter(fn: (r) => r._measurement == "temperature")'将
YOUR_BUCKET替换为您的 InfluxDB 桶的名称。使用查询客户端的
queryRows()方法查询 InfluxDB。queryRows()接受一个 Flux 查询和一个 RxJS Observer 对象。 客户端返回 table 元数据和作为 RxJS Observable 的行。queryRows()将您的观察者订阅到可观察对象。 最后,观察者将响应中的行记录到终端。const observer = { next(row, tableMeta) { const o = tableMeta.toObject(row) console.log( `${o._time} ${o._measurement} in '${o.location}' (${o.sensor_id}): ${o._field}=${o._value}` ) } } queryApi.queryRows(fluxQuery, observer)
完整示例
'use strict'
/** @module query
* Queries a data point in InfluxDB using the Javascript client library with Node.js.
**/
import { InfluxDB, Point } from '@influxdata/influxdb-client'
/** Environment variables **/
const url = process.env.INFLUX_URL || ''
const token = process.env.INFLUX_TOKEN
const org = process.env.INFLUX_ORG || ''
/**
* Instantiate the InfluxDB client
* with a configuration object.
*
* Get a query client configured for your org.
**/
const queryApi = new InfluxDB({url, token}).getQueryApi(org)
/** To avoid SQL injection, use a string literal for the query. */
const fluxQuery = 'from(bucket:"air_sensor") |> range(start: 0) |> filter(fn: (r) => r._measurement == "temperature")'
const myQuery = async () => {
for await (const {values, tableMeta} of queryApi.iterateRows(fluxQuery)) {
const o = tableMeta.toObject(values)
console.log(
`${o._time} ${o._measurement} in '${o.location}' (${o.sensor_id}): ${o._field}=${o._value}`
)
}
}
/** Execute a query and receive line table metadata and rows. */
myQuery()
要从文件中运行示例,设置您的 InfluxDB 环境变量并使用 node 来执行 JavaScript 文件。
export INFLUX_URL=http://localhost:8086 && \
export INFLUX_TOKEN=YOUR_API_TOKEN && \
export INFLUX_ORG=YOUR_ORG && \
node query.js
有关更多示例和信息,请参见JavaScript client on GitHub。