文档文档

使用 InfluxDB JavaScript 客户端库写入数据

使用 InfluxDB JavaScript 客户端库 从 Node.js 环境向 InfluxDB 写入数据。

JavaScript 客户端库包括以下便捷功能,用于向 InfluxDB 写入数据

  • 将默认标签应用于数据点。
  • 将点缓冲到批次中以优化数据传输。
  • 在失败时自动重试请求。
  • 为您的网络设置可选的 HTTP 代理地址。

开始之前

使用客户端库写入数据

  1. 实例化 InfluxDB 客户端。提供您的 InfluxDB URL 和 API 令牌。

    import {InfluxDB, Point} from '@influxdata/influxdb-client'
    
    const influxDB = new InfluxDB({YOUR_URL, YOUR_API_TOKEN})
    

    替换以下内容

    • YOUR_URL: InfluxDB URL
    • YOUR_API_TOKEN: InfluxDB API 令牌
  2. 使用客户端的 getWriteApi() 方法创建写入客户端。提供您的 InfluxDB 组织 ID 和存储桶名称。

    const writeApi = influxDB.getWriteApi(YOUR_ORG, YOUR_BUCKET)
    

    替换以下内容

    • YOUR_ORG: InfluxDB 组织 ID
    • YOUR_BUCKET: InfluxDB 存储桶名称
  3. 要将一个或多个 标签 应用于所有点,请使用 useDefaultTags() 方法。以键/值对的对象形式提供标签。

    writeApi.useDefaultTags({region: 'west'})
    
  4. 使用 Point() 构造函数创建

    1. 调用构造函数并提供测量
    2. 要添加一个或多个标签,请将 tag() 方法链接到构造函数。提供 namevalue
    3. 要添加 float 类型的字段,请将 floatField() 方法链接到构造函数。提供 namevalue
    const point1 = new Point('temperature')
      .tag('sensor_id', 'TLM010')
      .floatField('value', 24)
    
  5. 使用 writePoint() 方法将点写入到您的 InfluxDB 存储桶。最后,使用 close() 方法刷新所有待处理的写入。该示例记录了新的数据点,后跟 “WRITE FINISHED” 到 stdout。

    writeApi.writePoint(point1)
    
    writeApi.close().then(() => {
      console.log('WRITE FINISHED')
    })
    

完整示例

curl --request POST \
"http://localhost:8086/api/v2/write?org=YOUR_ORG&bucket=YOUR_BUCKET&precision=ns" \
  --header "Authorization: Token YOUR_API_TOKEN" \
  --header "Content-Type: text/plain; charset=utf-8" \
  --header "Accept: application/json" \
  --data-binary '
    airSensors,sensor_id=TLM0201 temperature=73.97038159354763,humidity=35.23103248356096,co=0.48445310567793615 1630424257000000000
    airSensors,sensor_id=TLM0202 temperature=75.30007505999716,humidity=35.651929918691714,co=0.5141876544505826 1630424257000000000
    '
'use strict'
/** @module write
 * Writes a data point to 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
const bucket = process.env.INFLUX_BUCKET

/**
 * Instantiate the InfluxDB client
 * with a configuration object.
 **/
const influxDB = new InfluxDB({ url, token })

/**
 * Create a write client from the getWriteApi method.
 * Provide your `org` and `bucket`.
 **/
const writeApi = influxDB.getWriteApi(org, bucket)

/**
 * Apply default tags to all points.
 **/
writeApi.useDefaultTags({ region: 'west' })

/**
 * Create a point and write it to the buffer.
 **/
const point1 = new Point('temperature')
  .tag('sensor_id', 'TLM01')
  .floatField('value', 24.0)
console.log(` ${point1}`)

writeApi.writePoint(point1)

/**
 * Flush pending writes and close writeApi.
 **/
writeApi.close().then(() => {
  console.log('WRITE FINISHED')
})

要从文件运行示例,请设置您的 InfluxDB 环境变量并使用 node 执行 JavaScript 文件。

export INFLUX_URL=http://localhost:8086 && \
export INFLUX_TOKEN=YOUR_API_TOKEN && \
export INFLUX_ORG=YOUR_ORG && \
export INFLUX_BUCKET=YOUR_BUCKET && \
node write.js

响应代码

有关 InfluxDB API 响应代码的信息,请参阅 InfluxDB API 写入文档


此页面是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 将进入维护模式。您可以继续像当前一样使用它,而无需对您的代码进行任何更改。

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、最近数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。InfluxDB 3 Enterprise 基于 Core 的基础构建,增加了高可用性、只读副本、增强的安全性以及数据压缩,以实现更快的查询和优化的存储。InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

有关更多信息,请查看