使用 InfluxDB JavaScript 客户端库查询数据
在 Node.js 环境中使用 InfluxDB JavaScript 客户端库 查询 InfluxDB。
以下示例将 Flux 查询发送到 InfluxDB 存储桶,并从可观察的表格中输出行。
开始之前
查询 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 对象。客户端返回 表格 元数据和行,作为 RxJS Observable。queryRows()
将您的观察者订阅到 observable。最后,观察者将响应中的行记录到终端。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
有关更多示例和信息,请参阅 GitHub 上的 JavaScript 客户端。
此页是否对您有帮助?
感谢您的反馈!