JavaScript SDK
更新时间:2026-07-24
本文介绍如何在 Node.js 应用中使用 JavaScript SDK 连接 TSDB 专享版,并完成数据写入和查询。
环境准备
使用 SDK 前,请准备一个 Node.js 项目,并完成 SDK 使用说明中的连接准备工作。
业务访问令牌应保存在可信的服务端环境中。不要在浏览器页面、客户端脚本或公开代码仓库中保存令牌。
安装 SDK
本文示例使用 @influxdata/influxdb3-client 2.3.0。
npm:
Bash
1npm install --save-exact @influxdata/influxdb3-client@2.3.0
pnpm:
Bash
1pnpm add --save-exact @influxdata/influxdb3-client@2.3.0
配置连接信息
示例通过以下环境变量读取连接信息:
| 环境变量 | 说明 |
|---|---|
TSDB_HOST_URL |
由集群详情页显示的访问地址和端口组成的完整 URL,例如 http://<访问地址>:<端口> |
TSDB_DATABASE_NAME |
目标 Database 名称 |
TSDB_AUTH_TOKEN |
具有目标 Database 读写权限的业务访问令牌 |
写入和查询数据
以下 ESM 示例初始化客户端,写入一条 Line Protocol 数据,然后使用 SQL 查询刚写入的数据。示例使用顶层 await,请保存为 .mjs 文件运行,或在 package.json 中设置 "type": "module":
Javascript
1import {InfluxDBClient} from '@influxdata/influxdb3-client'
2
3const client = new InfluxDBClient({
4 host: process.env.TSDB_HOST_URL,
5 token: process.env.TSDB_AUTH_TOKEN,
6 database: process.env.TSDB_DATABASE_NAME,
7 writeOptions: {useV2Api: false},
8})
9
10try {
11 await client.write('cpu,host=server01 usage=42.5')
12
13 // 首次写入创建 Table 后,等待新表可查询。
14 await new Promise(resolve => setTimeout(resolve, 5000))
15
16 const sql =
17 "SELECT time, host, usage FROM cpu " +
18 "WHERE host = 'server01' ORDER BY time DESC LIMIT 1"
19 const rows = client.query(sql)
20 for await (const row of rows) {
21 console.log(row)
22 }
23} finally {
24 client.close()
25}
配置说明
writeOptions: {useV2Api: false}用于启用 V3 写入接口,复制示例时请保留该配置。- 写入和查询使用同一个
TSDB_HOST_URL,无需手动拼接 API 路径。 - 示例首次写入
cpu时会自动创建 Table,因此在写入后等待 5 秒。新表通常在约 5 秒后可以查询,实际时间可能受集群运行状态影响。该等待只适用于首次建表;向已有 Table 写入不受影响。 write()返回 Promise,query()返回异步迭代器;应用需要等待操作完成后再继续处理结果。- 使用完成后调用
client.close()释放 HTTP 和 Flight 连接。 - SDK 只用于数据写入和查询。管理 Database、Table、Retention 或业务访问令牌时,请使用 CLI 工具或资源管理 API。
评价此篇文章
