文档文档

使用 reduce() 构建 JSON。

使用 http.post() 在 JSON 正文中发送数据

使用 reduce() 函数创建一个 JSON 对象,以包含在带有 http.post() 的正文中。

  1. 导入 array 包以查询数据和构造表,以及 http 包 以通过 http 传输 JSON。

  2. 使用 array.from() 查询数据并构造表。或者,使用另一种方法使用 Flux 查询数据

  3. 使用 reduce() 函数构造一个 JSON 对象,然后使用 yield() 存储 reduce 的输出。此表看起来像

    fieldtag
    example-field:[“3"4"1{example-tag-key:[“bar"bar"bar
  4. 使用 map() 函数将两个组件组合成一个 JSON 对象,然后使用第二个 yield() 函数将此对象存储为 final JSON。此表看起来像

    fieldtagfinal
    example-field:[“3"4"1{example-tag-key:[“bar"bar"bar{example-tag-key:[“bar"bar"bar] , example-field:[“3"4"1]}
  5. 使用 findRecord() 函数从 final 列(JSON)中提取值。

  6. 使用 http.post() 指定要将 JSON 发送到的 URL。在本例中,我们使用 Post Test Server 作为 URL 来发送 JSON,并测试 http.post() 函数。

import "array"
import "http"

 
data = array.from(
        rows: [
            {_time: 2020-01-01T00:00:00Z, _field: "example-field", _value: 3, foo: "bar"},
            {_time: 2020-01-01T00:01:00Z, _field: "example-field", _value: 4, foo: "bar"},
            {_time: 2020-01-01T00:02:00Z, _field: "example-field", _value: 1, foo: "bar"},
        ],
    )
  
    |> reduce(
            fn: (r, accumulator) => ({tag:accumulator.tag + "\"" + r.foo, 
                                    field : accumulator.field + "\"" + string(v:r._value)
                                    }),
            identity: {tag: "{example-tag-key:[", 
                    field: "example-field:[" }
    )
    |> yield(name: "output of reduce")
    |> map(fn: (r) => ({ r with tag: r.tag + "]" }))
    |> map(fn: (r) => ({ r with field: r.field + "]}" }))
    |> map(fn: (r) => ({ r with final: r.tag + " , " + r.field}))
    |> yield(name: "final JSON")
    |> findRecord(
        fn: (key) => true,
        idx: 0,
        )


http.post(
    url: "https://ptsv2.com/t/c4x38-1656014222/post",
    headers: {"Content-type": "application/json"},
    data: bytes(v: data.final),
    )

此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

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

有关更多信息,请查看