Merge branch 'master' into late-arriving-data
commit
4e88febd15
|
@ -1,7 +1,7 @@
|
||||||
---
|
---
|
||||||
title: InfluxDB API client library tutorials
|
title: InfluxDB API client library starter
|
||||||
seotitle: Get started with InfluxDB API client libraries
|
seotitle: Starter tutorial for InfluxDB API client libraries
|
||||||
description: Follow step-by-step tutorials to for InfluxDB API client libraries in your favorite framework or language.
|
description: Follow step-by-step tutorials to build an IoT dashboard with API client libraries in your favorite framework or language.
|
||||||
weight: 4
|
weight: 4
|
||||||
menu:
|
menu:
|
||||||
influxdb_cloud:
|
influxdb_cloud:
|
||||||
|
@ -10,4 +10,4 @@ menu:
|
||||||
influxdb/cloud/tags: [api]
|
influxdb/cloud/tags: [api]
|
||||||
---
|
---
|
||||||
|
|
||||||
{{< children >}}
|
{{< duplicate-oss >}}
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
---
|
|
||||||
title: InfluxDB API client library starter
|
|
||||||
seotitle: Starter tutorial for InfluxDB API client libraries
|
|
||||||
description: Follow step-by-step tutorials to build an IoT dashboard with API client libraries in your favorite framework or language.
|
|
||||||
weight: 4
|
|
||||||
menu:
|
|
||||||
influxdb_cloud:
|
|
||||||
name: Client library starter
|
|
||||||
parent: Client library tutorials
|
|
||||||
influxdb/cloud/tags: [api]
|
|
||||||
---
|
|
||||||
|
|
||||||
{{< duplicate-oss >}}
|
|
|
@ -9,8 +9,8 @@ menu:
|
||||||
influxdb_cloud:
|
influxdb_cloud:
|
||||||
identifier: client-library-starter-js
|
identifier: client-library-starter-js
|
||||||
name: JavaScript
|
name: JavaScript
|
||||||
parent: Client library starter
|
parent: Client library tutorials
|
||||||
influxdb/cloud/tags: [api, javascript, nodejs]
|
influxdb/cloud/tags: [api, javascript, nodejs]
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% duplicate-oss %}}
|
{{< duplicate-oss >}}
|
|
@ -10,8 +10,8 @@ menu:
|
||||||
influxdb_cloud:
|
influxdb_cloud:
|
||||||
identifier: client-library-starter-py
|
identifier: client-library-starter-py
|
||||||
name: Python
|
name: Python
|
||||||
parent: Client library starter
|
parent: Client library tutorials
|
||||||
influxdb/cloud/tags: [api, python]
|
influxdb/cloud/tags: [api, python]
|
||||||
---
|
---
|
||||||
|
|
||||||
{{% duplicate-oss %}}
|
{{< duplicate-oss >}}
|
|
@ -3,8 +3,8 @@ title: Check if a value exists
|
||||||
seotitle: Use Flux to check if a value exists
|
seotitle: Use Flux to check if a value exists
|
||||||
list_title: Exists
|
list_title: Exists
|
||||||
description: >
|
description: >
|
||||||
Use the Flux `exists` operator to check if a record contains a key or if that
|
Use the `exists` operator to check if a row record contains a column or if a
|
||||||
key's value is `null`.
|
column's value is _null_.
|
||||||
menu:
|
menu:
|
||||||
influxdb_1_7:
|
influxdb_1_7:
|
||||||
name: Exists
|
name: Exists
|
||||||
|
@ -20,63 +20,87 @@ list_code_example: |
|
||||||
```
|
```
|
||||||
---
|
---
|
||||||
|
|
||||||
Use the Flux `exists` operator to check if a record contains a key or if that
|
Use the `exists` operator to check if a row record contains a column or if a
|
||||||
key's value is `null`.
|
column's value is _null_.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
p = {firstName: "John", lastName: "Doe", age: 42}
|
(r) => exists r.column
|
||||||
|
|
||||||
exists p.firstName
|
|
||||||
// Returns true
|
|
||||||
|
|
||||||
exists p.height
|
|
||||||
// Returns false
|
|
||||||
```
|
```
|
||||||
|
|
||||||
If you're just getting started with Flux queries, check out the following:
|
If you're just getting started with Flux queries, check out the following:
|
||||||
|
|
||||||
- [Get started with Flux](/influxdb/v1.7/flux/get-started/) for a conceptual overview of Flux and parts of a Flux query.
|
- [Get started with Flux](/{{< latest "flux" >}}/get-started/) for a conceptual overview of Flux and parts of a Flux query.
|
||||||
- [Execute queries](/influxdb/v1.7/flux/guides/execute-queries/) to discover a variety of ways to run your queries.
|
- [Execute queries](/influxdb/v2.4/query-data/execute-queries/) to discover a variety of ways to run your queries.
|
||||||
|
|
||||||
Use `exists` with row functions (
|
Use `exists` with row functions (
|
||||||
[`filter()`](/{{< latest "flux" >}}/stdlib/universe/filter/),
|
[`filter()`](/{{< latest "flux" >}}/stdlib/universe/filter/),
|
||||||
[`map()`](/{{< latest "flux" >}}/stdlib/universe/map/),
|
[`map()`](/{{< latest "flux" >}}/stdlib/universe/map/),
|
||||||
[`reduce()`](/{{< latest "flux" >}}/stdlib/universe/reduce/))
|
[`reduce()`](/{{< latest "flux" >}}/stdlib/universe/reduce/))
|
||||||
to check if a row includes a column or if the value for that column is `null`.
|
to check if a row includes a column or if the value for that column is _null_.
|
||||||
|
|
||||||
#### Filter null values
|
#### Filter null values
|
||||||
|
|
||||||
```js
|
```js
|
||||||
from(bucket: "db/rp")
|
from(bucket: "example-bucket")
|
||||||
|> range(start: -5m)
|
|> range(start: -5m)
|
||||||
|> filter(fn: (r) => exists r._value)
|
|> filter(fn: (r) => exists r._value)
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Map values based on existence
|
#### Map values based on existence
|
||||||
|
|
||||||
```js
|
```js
|
||||||
from(bucket: "default")
|
from(bucket: "default")
|
||||||
|> range(start: -30s)
|
|> range(start: -30s)
|
||||||
|> map(fn: (r) => ({
|
|> map(
|
||||||
r with
|
fn: (r) => ({r with
|
||||||
human_readable:
|
human_readable: if exists r._value then
|
||||||
if exists r._value then "${r._field} is ${string(v:r._value)}."
|
"${r._field} is ${string(v: r._value)}."
|
||||||
else "${r._field} has no value."
|
else
|
||||||
}))
|
"${r._field} has no value.",
|
||||||
|
}),
|
||||||
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Ignore null values in a custom aggregate function
|
#### Ignore null values in a custom aggregate function
|
||||||
|
|
||||||
```js
|
```js
|
||||||
customSumProduct = (tables=<-) =>
|
customSumProduct = (tables=<-) => tables
|
||||||
tables
|
|
||||||
|> reduce(
|
|> reduce(
|
||||||
identity: {sum: 0.0, product: 1.0},
|
identity: {sum: 0.0, product: 1.0},
|
||||||
fn: (r, accumulator) => ({
|
fn: (r, accumulator) => ({r with
|
||||||
r with
|
sum: if exists r._value then
|
||||||
sum:
|
r._value + accumulator.sum
|
||||||
if exists r._value then r._value + accumulator.sum
|
else
|
||||||
else accumulator.sum,
|
accumulator.sum,
|
||||||
product:
|
product: if exists r._value then
|
||||||
if exists r._value then r.value * accumulator.product
|
r.value * accumulator.product
|
||||||
else accumulator.product
|
else
|
||||||
})
|
accumulator.product,
|
||||||
|
}),
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Check if a statically defined record contains a key
|
||||||
|
|
||||||
|
When you use the [record literal syntax](/flux/v0.x/data-types/composite/record/#record-syntax)
|
||||||
|
to statically define a record, Flux knows the record type and what keys to expect.
|
||||||
|
|
||||||
|
- If the key exists in the static record, `exists` returns `true`.
|
||||||
|
- If the key does not exist in the static record, because the record type is
|
||||||
|
statically known, `exists` returns an error.
|
||||||
|
|
||||||
|
```js
|
||||||
|
import "internal/debug"
|
||||||
|
|
||||||
|
p = {
|
||||||
|
firstName: "John",
|
||||||
|
lastName: "Doe",
|
||||||
|
age: 42,
|
||||||
|
}
|
||||||
|
|
||||||
|
exists p.firstName
|
||||||
|
// Returns true
|
||||||
|
|
||||||
|
exists p.height
|
||||||
|
// Returns "error: record is missing label height"
|
||||||
|
```
|
||||||
|
|
|
@ -3,8 +3,8 @@ title: Check if a value exists
|
||||||
seotitle: Use Flux to check if a value exists
|
seotitle: Use Flux to check if a value exists
|
||||||
list_title: Exists
|
list_title: Exists
|
||||||
description: >
|
description: >
|
||||||
Use the Flux `exists` operator to check if a record contains a key or if that
|
Use the `exists` operator to check if a row record contains a column or if a
|
||||||
key's value is `null`.
|
column's value is _null_.
|
||||||
menu:
|
menu:
|
||||||
influxdb_1_8:
|
influxdb_1_8:
|
||||||
name: Exists
|
name: Exists
|
||||||
|
@ -20,63 +20,87 @@ list_code_example: |
|
||||||
```
|
```
|
||||||
---
|
---
|
||||||
|
|
||||||
Use the Flux `exists` operator to check if a record contains a key or if that
|
Use the `exists` operator to check if a row record contains a column or if a
|
||||||
key's value is `null`.
|
column's value is _null_.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
p = {firstName: "John", lastName: "Doe", age: 42}
|
(r) => exists r.column
|
||||||
|
|
||||||
exists p.firstName
|
|
||||||
// Returns true
|
|
||||||
|
|
||||||
exists p.height
|
|
||||||
// Returns false
|
|
||||||
```
|
```
|
||||||
|
|
||||||
If you're just getting started with Flux queries, check out the following:
|
If you're just getting started with Flux queries, check out the following:
|
||||||
|
|
||||||
- [Get started with Flux](/influxdb/v1.8/flux/get-started/) for a conceptual overview of Flux and parts of a Flux query.
|
- [Get started with Flux](/{{< latest "flux" >}}/get-started/) for a conceptual overview of Flux and parts of a Flux query.
|
||||||
- [Execute queries](/influxdb/v1.8/flux/guides/execute-queries/) to discover a variety of ways to run your queries.
|
- [Execute queries](/influxdb/v2.4/query-data/execute-queries/) to discover a variety of ways to run your queries.
|
||||||
|
|
||||||
Use `exists` with row functions (
|
Use `exists` with row functions (
|
||||||
[`filter()`](/{{< latest "flux" >}}/stdlib/universe/filter/),
|
[`filter()`](/{{< latest "flux" >}}/stdlib/universe/filter/),
|
||||||
[`map()`](/{{< latest "flux" >}}/stdlib/universe/map/),
|
[`map()`](/{{< latest "flux" >}}/stdlib/universe/map/),
|
||||||
[`reduce()`](/{{< latest "flux" >}}/stdlib/universe/reduce/))
|
[`reduce()`](/{{< latest "flux" >}}/stdlib/universe/reduce/))
|
||||||
to check if a row includes a column or if the value for that column is `null`.
|
to check if a row includes a column or if the value for that column is _null_.
|
||||||
|
|
||||||
#### Filter null values
|
#### Filter null values
|
||||||
|
|
||||||
```js
|
```js
|
||||||
from(bucket: "db/rp")
|
from(bucket: "example-bucket")
|
||||||
|> range(start: -5m)
|
|> range(start: -5m)
|
||||||
|> filter(fn: (r) => exists r._value)
|
|> filter(fn: (r) => exists r._value)
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Map values based on existence
|
#### Map values based on existence
|
||||||
|
|
||||||
```js
|
```js
|
||||||
from(bucket: "default")
|
from(bucket: "default")
|
||||||
|> range(start: -30s)
|
|> range(start: -30s)
|
||||||
|> map(fn: (r) => ({
|
|> map(
|
||||||
r with
|
fn: (r) => ({r with
|
||||||
human_readable:
|
human_readable: if exists r._value then
|
||||||
if exists r._value then "${r._field} is ${string(v:r._value)}."
|
"${r._field} is ${string(v: r._value)}."
|
||||||
else "${r._field} has no value."
|
else
|
||||||
}))
|
"${r._field} has no value.",
|
||||||
|
}),
|
||||||
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Ignore null values in a custom aggregate function
|
#### Ignore null values in a custom aggregate function
|
||||||
|
|
||||||
```js
|
```js
|
||||||
customSumProduct = (tables=<-) =>
|
customSumProduct = (tables=<-) => tables
|
||||||
tables
|
|
||||||
|> reduce(
|
|> reduce(
|
||||||
identity: {sum: 0.0, product: 1.0},
|
identity: {sum: 0.0, product: 1.0},
|
||||||
fn: (r, accumulator) => ({
|
fn: (r, accumulator) => ({r with
|
||||||
r with
|
sum: if exists r._value then
|
||||||
sum:
|
r._value + accumulator.sum
|
||||||
if exists r._value then r._value + accumulator.sum
|
else
|
||||||
else accumulator.sum,
|
accumulator.sum,
|
||||||
product:
|
product: if exists r._value then
|
||||||
if exists r._value then r.value * accumulator.product
|
r.value * accumulator.product
|
||||||
else accumulator.product
|
else
|
||||||
})
|
accumulator.product,
|
||||||
|
}),
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Check if a statically defined record contains a key
|
||||||
|
|
||||||
|
When you use the [record literal syntax](/flux/v0.x/data-types/composite/record/#record-syntax)
|
||||||
|
to statically define a record, Flux knows the record type and what keys to expect.
|
||||||
|
|
||||||
|
- If the key exists in the static record, `exists` returns `true`.
|
||||||
|
- If the key does not exist in the static record, because the record type is
|
||||||
|
statically known, `exists` returns an error.
|
||||||
|
|
||||||
|
```js
|
||||||
|
import "internal/debug"
|
||||||
|
|
||||||
|
p = {
|
||||||
|
firstName: "John",
|
||||||
|
lastName: "Doe",
|
||||||
|
age: 42,
|
||||||
|
}
|
||||||
|
|
||||||
|
exists p.firstName
|
||||||
|
// Returns true
|
||||||
|
|
||||||
|
exists p.height
|
||||||
|
// Returns "error: record is missing label height"
|
||||||
|
```
|
||||||
|
|
|
@ -3,8 +3,8 @@ title: Check if a value exists
|
||||||
seotitle: Use Flux to check if a value exists
|
seotitle: Use Flux to check if a value exists
|
||||||
list_title: Exists
|
list_title: Exists
|
||||||
description: >
|
description: >
|
||||||
Use the Flux `exists` operator to check if a record contains a key or if that
|
Use the `exists` operator to check if a row record contains a column or if a
|
||||||
key's value is `null`.
|
column's value is _null_.
|
||||||
influxdb/v2.0/tags: [exists]
|
influxdb/v2.0/tags: [exists]
|
||||||
menu:
|
menu:
|
||||||
influxdb_2_0:
|
influxdb_2_0:
|
||||||
|
@ -24,31 +24,26 @@ list_code_example: |
|
||||||
```
|
```
|
||||||
---
|
---
|
||||||
|
|
||||||
Use the Flux `exists` operator to check if a record contains a key or if that
|
Use the `exists` operator to check if a row record contains a column or if a
|
||||||
key's value is `null`.
|
column's value is _null_.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
p = {firstName: "John", lastName: "Doe", age: 42}
|
(r) => exists r.column
|
||||||
|
|
||||||
exists p.firstName
|
|
||||||
// Returns true
|
|
||||||
|
|
||||||
exists p.height
|
|
||||||
// Returns false
|
|
||||||
```
|
```
|
||||||
|
|
||||||
If you're just getting started with Flux queries, check out the following:
|
If you're just getting started with Flux queries, check out the following:
|
||||||
|
|
||||||
- [Get started with Flux](/{{< latest "flux" >}}/get-started/) for a conceptual overview of Flux and parts of a Flux query.
|
- [Get started with Flux](/{{< latest "flux" >}}/get-started/) for a conceptual overview of Flux and parts of a Flux query.
|
||||||
- [Execute queries](/influxdb/v2.0/query-data/execute-queries/) to discover a variety of ways to run your queries.
|
- [Execute queries](/influxdb/v2.4/query-data/execute-queries/) to discover a variety of ways to run your queries.
|
||||||
|
|
||||||
Use `exists` with row functions (
|
Use `exists` with row functions (
|
||||||
[`filter()`](/{{< latest "flux" >}}/stdlib/universe/filter/),
|
[`filter()`](/{{< latest "flux" >}}/stdlib/universe/filter/),
|
||||||
[`map()`](/{{< latest "flux" >}}/stdlib/universe/map/),
|
[`map()`](/{{< latest "flux" >}}/stdlib/universe/map/),
|
||||||
[`reduce()`](/{{< latest "flux" >}}/stdlib/universe/reduce/))
|
[`reduce()`](/{{< latest "flux" >}}/stdlib/universe/reduce/))
|
||||||
to check if a row includes a column or if the value for that column is `null`.
|
to check if a row includes a column or if the value for that column is _null_.
|
||||||
|
|
||||||
#### Filter null values
|
#### Filter null values
|
||||||
|
|
||||||
```js
|
```js
|
||||||
from(bucket: "example-bucket")
|
from(bucket: "example-bucket")
|
||||||
|> range(start: -5m)
|
|> range(start: -5m)
|
||||||
|
@ -56,31 +51,60 @@ from(bucket: "example-bucket")
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Map values based on existence
|
#### Map values based on existence
|
||||||
|
|
||||||
```js
|
```js
|
||||||
from(bucket: "default")
|
from(bucket: "default")
|
||||||
|> range(start: -30s)
|
|> range(start: -30s)
|
||||||
|> map(fn: (r) => ({
|
|> map(
|
||||||
r with
|
fn: (r) => ({r with
|
||||||
human_readable:
|
human_readable: if exists r._value then
|
||||||
if exists r._value then "${r._field} is ${string(v:r._value)}."
|
"${r._field} is ${string(v: r._value)}."
|
||||||
else "${r._field} has no value."
|
else
|
||||||
}))
|
"${r._field} has no value.",
|
||||||
|
}),
|
||||||
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Ignore null values in a custom aggregate function
|
#### Ignore null values in a custom aggregate function
|
||||||
|
|
||||||
```js
|
```js
|
||||||
customSumProduct = (tables=<-) =>
|
customSumProduct = (tables=<-) => tables
|
||||||
tables
|
|
||||||
|> reduce(
|
|> reduce(
|
||||||
identity: {sum: 0.0, product: 1.0},
|
identity: {sum: 0.0, product: 1.0},
|
||||||
fn: (r, accumulator) => ({
|
fn: (r, accumulator) => ({r with
|
||||||
r with
|
sum: if exists r._value then
|
||||||
sum:
|
r._value + accumulator.sum
|
||||||
if exists r._value then r._value + accumulator.sum
|
else
|
||||||
else accumulator.sum,
|
accumulator.sum,
|
||||||
product:
|
product: if exists r._value then
|
||||||
if exists r._value then r.value * accumulator.product
|
r.value * accumulator.product
|
||||||
else accumulator.product
|
else
|
||||||
})
|
accumulator.product,
|
||||||
|
}),
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Check if a statically defined record contains a key
|
||||||
|
|
||||||
|
When you use the [record literal syntax](/flux/v0.x/data-types/composite/record/#record-syntax)
|
||||||
|
to statically define a record, Flux knows the record type and what keys to expect.
|
||||||
|
|
||||||
|
- If the key exists in the static record, `exists` returns `true`.
|
||||||
|
- If the key does not exist in the static record, because the record type is
|
||||||
|
statically known, `exists` returns an error.
|
||||||
|
|
||||||
|
```js
|
||||||
|
import "internal/debug"
|
||||||
|
|
||||||
|
p = {
|
||||||
|
firstName: "John",
|
||||||
|
lastName: "Doe",
|
||||||
|
age: 42,
|
||||||
|
}
|
||||||
|
|
||||||
|
exists p.firstName
|
||||||
|
// Returns true
|
||||||
|
|
||||||
|
exists p.height
|
||||||
|
// Returns "error: record is missing label height"
|
||||||
|
```
|
||||||
|
|
|
@ -3,8 +3,8 @@ title: Check if a value exists
|
||||||
seotitle: Use Flux to check if a value exists
|
seotitle: Use Flux to check if a value exists
|
||||||
list_title: Exists
|
list_title: Exists
|
||||||
description: >
|
description: >
|
||||||
Use the Flux `exists` operator to check if a record contains a key or if that
|
Use the `exists` operator to check if a row record contains a column or if a
|
||||||
key's value is `null`.
|
column's value is _null_.
|
||||||
influxdb/v2.1/tags: [exists]
|
influxdb/v2.1/tags: [exists]
|
||||||
menu:
|
menu:
|
||||||
influxdb_2_1:
|
influxdb_2_1:
|
||||||
|
@ -24,31 +24,26 @@ list_code_example: |
|
||||||
```
|
```
|
||||||
---
|
---
|
||||||
|
|
||||||
Use the Flux `exists` operator to check if a record contains a key or if that
|
Use the `exists` operator to check if a row record contains a column or if a
|
||||||
key's value is `null`.
|
column's value is _null_.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
p = {firstName: "John", lastName: "Doe", age: 42}
|
(r) => exists r.column
|
||||||
|
|
||||||
exists p.firstName
|
|
||||||
// Returns true
|
|
||||||
|
|
||||||
exists p.height
|
|
||||||
// Returns false
|
|
||||||
```
|
```
|
||||||
|
|
||||||
If you're just getting started with Flux queries, check out the following:
|
If you're just getting started with Flux queries, check out the following:
|
||||||
|
|
||||||
- [Get started with Flux](/{{< latest "flux" >}}/get-started/) for a conceptual overview of Flux and parts of a Flux query.
|
- [Get started with Flux](/{{< latest "flux" >}}/get-started/) for a conceptual overview of Flux and parts of a Flux query.
|
||||||
- [Execute queries](/influxdb/v2.1/query-data/execute-queries/) to discover a variety of ways to run your queries.
|
- [Execute queries](/influxdb/v2.4/query-data/execute-queries/) to discover a variety of ways to run your queries.
|
||||||
|
|
||||||
Use `exists` with row functions (
|
Use `exists` with row functions (
|
||||||
[`filter()`](/{{< latest "flux" >}}/stdlib/universe/filter/),
|
[`filter()`](/{{< latest "flux" >}}/stdlib/universe/filter/),
|
||||||
[`map()`](/{{< latest "flux" >}}/stdlib/universe/map/),
|
[`map()`](/{{< latest "flux" >}}/stdlib/universe/map/),
|
||||||
[`reduce()`](/{{< latest "flux" >}}/stdlib/universe/reduce/))
|
[`reduce()`](/{{< latest "flux" >}}/stdlib/universe/reduce/))
|
||||||
to check if a row includes a column or if the value for that column is `null`.
|
to check if a row includes a column or if the value for that column is _null_.
|
||||||
|
|
||||||
#### Filter null values
|
#### Filter null values
|
||||||
|
|
||||||
```js
|
```js
|
||||||
from(bucket: "example-bucket")
|
from(bucket: "example-bucket")
|
||||||
|> range(start: -5m)
|
|> range(start: -5m)
|
||||||
|
@ -56,6 +51,7 @@ from(bucket: "example-bucket")
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Map values based on existence
|
#### Map values based on existence
|
||||||
|
|
||||||
```js
|
```js
|
||||||
from(bucket: "default")
|
from(bucket: "default")
|
||||||
|> range(start: -30s)
|
|> range(start: -30s)
|
||||||
|
@ -70,6 +66,7 @@ from(bucket: "default")
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Ignore null values in a custom aggregate function
|
#### Ignore null values in a custom aggregate function
|
||||||
|
|
||||||
```js
|
```js
|
||||||
customSumProduct = (tables=<-) => tables
|
customSumProduct = (tables=<-) => tables
|
||||||
|> reduce(
|
|> reduce(
|
||||||
|
@ -86,3 +83,28 @@ customSumProduct = (tables=<-) => tables
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Check if a statically defined record contains a key
|
||||||
|
|
||||||
|
When you use the [record literal syntax](/flux/v0.x/data-types/composite/record/#record-syntax)
|
||||||
|
to statically define a record, Flux knows the record type and what keys to expect.
|
||||||
|
|
||||||
|
- If the key exists in the static record, `exists` returns `true`.
|
||||||
|
- If the key does not exist in the static record, because the record type is
|
||||||
|
statically known, `exists` returns an error.
|
||||||
|
|
||||||
|
```js
|
||||||
|
import "internal/debug"
|
||||||
|
|
||||||
|
p = {
|
||||||
|
firstName: "John",
|
||||||
|
lastName: "Doe",
|
||||||
|
age: 42,
|
||||||
|
}
|
||||||
|
|
||||||
|
exists p.firstName
|
||||||
|
// Returns true
|
||||||
|
|
||||||
|
exists p.height
|
||||||
|
// Returns "error: record is missing label height"
|
||||||
|
```
|
||||||
|
|
|
@ -3,8 +3,8 @@ title: Check if a value exists
|
||||||
seotitle: Use Flux to check if a value exists
|
seotitle: Use Flux to check if a value exists
|
||||||
list_title: Exists
|
list_title: Exists
|
||||||
description: >
|
description: >
|
||||||
Use the Flux `exists` operator to check if a record contains a key or if that
|
Use the `exists` operator to check if a row record contains a column or if a
|
||||||
key's value is `null`.
|
column's value is _null_.
|
||||||
influxdb/v2.2/tags: [exists]
|
influxdb/v2.2/tags: [exists]
|
||||||
menu:
|
menu:
|
||||||
influxdb_2_2:
|
influxdb_2_2:
|
||||||
|
@ -24,31 +24,26 @@ list_code_example: |
|
||||||
```
|
```
|
||||||
---
|
---
|
||||||
|
|
||||||
Use the Flux `exists` operator to check if a record contains a key or if that
|
Use the `exists` operator to check if a row record contains a column or if a
|
||||||
key's value is `null`.
|
column's value is _null_.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
p = {firstName: "John", lastName: "Doe", age: 42}
|
(r) => exists r.column
|
||||||
|
|
||||||
exists p.firstName
|
|
||||||
// Returns true
|
|
||||||
|
|
||||||
exists p.height
|
|
||||||
// Returns false
|
|
||||||
```
|
```
|
||||||
|
|
||||||
If you're just getting started with Flux queries, check out the following:
|
If you're just getting started with Flux queries, check out the following:
|
||||||
|
|
||||||
- [Get started with Flux](/{{< latest "flux" >}}/get-started/) for a conceptual overview of Flux and parts of a Flux query.
|
- [Get started with Flux](/{{< latest "flux" >}}/get-started/) for a conceptual overview of Flux and parts of a Flux query.
|
||||||
- [Execute queries](/influxdb/v2.2/query-data/execute-queries/) to discover a variety of ways to run your queries.
|
- [Execute queries](/influxdb/v2.4/query-data/execute-queries/) to discover a variety of ways to run your queries.
|
||||||
|
|
||||||
Use `exists` with row functions (
|
Use `exists` with row functions (
|
||||||
[`filter()`](/{{< latest "flux" >}}/stdlib/universe/filter/),
|
[`filter()`](/{{< latest "flux" >}}/stdlib/universe/filter/),
|
||||||
[`map()`](/{{< latest "flux" >}}/stdlib/universe/map/),
|
[`map()`](/{{< latest "flux" >}}/stdlib/universe/map/),
|
||||||
[`reduce()`](/{{< latest "flux" >}}/stdlib/universe/reduce/))
|
[`reduce()`](/{{< latest "flux" >}}/stdlib/universe/reduce/))
|
||||||
to check if a row includes a column or if the value for that column is `null`.
|
to check if a row includes a column or if the value for that column is _null_.
|
||||||
|
|
||||||
#### Filter null values
|
#### Filter null values
|
||||||
|
|
||||||
```js
|
```js
|
||||||
from(bucket: "example-bucket")
|
from(bucket: "example-bucket")
|
||||||
|> range(start: -5m)
|
|> range(start: -5m)
|
||||||
|
@ -56,6 +51,7 @@ from(bucket: "example-bucket")
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Map values based on existence
|
#### Map values based on existence
|
||||||
|
|
||||||
```js
|
```js
|
||||||
from(bucket: "default")
|
from(bucket: "default")
|
||||||
|> range(start: -30s)
|
|> range(start: -30s)
|
||||||
|
@ -70,6 +66,7 @@ from(bucket: "default")
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Ignore null values in a custom aggregate function
|
#### Ignore null values in a custom aggregate function
|
||||||
|
|
||||||
```js
|
```js
|
||||||
customSumProduct = (tables=<-) => tables
|
customSumProduct = (tables=<-) => tables
|
||||||
|> reduce(
|
|> reduce(
|
||||||
|
@ -86,3 +83,28 @@ customSumProduct = (tables=<-) => tables
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Check if a statically defined record contains a key
|
||||||
|
|
||||||
|
When you use the [record literal syntax](/flux/v0.x/data-types/composite/record/#record-syntax)
|
||||||
|
to statically define a record, Flux knows the record type and what keys to expect.
|
||||||
|
|
||||||
|
- If the key exists in the static record, `exists` returns `true`.
|
||||||
|
- If the key does not exist in the static record, because the record type is
|
||||||
|
statically known, `exists` returns an error.
|
||||||
|
|
||||||
|
```js
|
||||||
|
import "internal/debug"
|
||||||
|
|
||||||
|
p = {
|
||||||
|
firstName: "John",
|
||||||
|
lastName: "Doe",
|
||||||
|
age: 42,
|
||||||
|
}
|
||||||
|
|
||||||
|
exists p.firstName
|
||||||
|
// Returns true
|
||||||
|
|
||||||
|
exists p.height
|
||||||
|
// Returns "error: record is missing label height"
|
||||||
|
```
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
---
|
---
|
||||||
title: InfluxDB API client library tutorials
|
title: InfluxDB API client library starter
|
||||||
seotitle: Get started with InfluxDB API client libraries
|
seotitle: Starter tutorial for InfluxDB API client libraries
|
||||||
description: Follow step-by-step tutorials to for InfluxDB API client libraries in your favorite framework or language.
|
description: Follow step-by-step tutorials to build an IoT dashboard with API client libraries in your favorite framework or language.
|
||||||
weight: 4
|
weight: 4
|
||||||
menu:
|
menu:
|
||||||
influxdb_2_3:
|
influxdb_2_3:
|
||||||
|
@ -10,4 +10,21 @@ menu:
|
||||||
influxdb/v2.3/tags: [api]
|
influxdb/v2.3/tags: [api]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
Follow step-by-step tutorials to build an Internet-of-Things (IoT) application with InfluxData client libraries and your favorite framework or language.
|
||||||
|
InfluxData and the user community maintain client libraries for developers who want to take advantage of:
|
||||||
|
|
||||||
|
- Idioms for InfluxDB requests, responses, and errors.
|
||||||
|
- Common patterns in a familiar programming language.
|
||||||
|
- Faster development and less boilerplate code.
|
||||||
|
|
||||||
|
In these tutorials, you'll use the InfluxDB API and
|
||||||
|
client libraries to build a modern application, and learn the following:
|
||||||
|
|
||||||
|
- InfluxDB core concepts.
|
||||||
|
- How the application interacts with devices and InfluxDB.
|
||||||
|
- How to authenticate apps and devices to the API.
|
||||||
|
- How to install a client library.
|
||||||
|
- How to write and query data in InfluxDB.
|
||||||
|
- How to use the InfluxData UI libraries to format data and create visualizations.
|
||||||
|
|
||||||
{{< children >}}
|
{{< children >}}
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
---
|
|
||||||
title: InfluxDB API client library starter
|
|
||||||
seotitle: Starter tutorial for InfluxDB API client libraries
|
|
||||||
description: Follow step-by-step tutorials to build an IoT dashboard with API client libraries in your favorite framework or language.
|
|
||||||
weight: 4
|
|
||||||
menu:
|
|
||||||
influxdb_2_3:
|
|
||||||
name: Client library starter
|
|
||||||
parent: Client library tutorials
|
|
||||||
influxdb/v2.3/tags: [api]
|
|
||||||
---
|
|
||||||
|
|
||||||
Follow step-by-step tutorials to build an Internet-of-Things (IoT) application with InfluxData client libraries and your favorite framework or language.
|
|
||||||
InfluxData and the user community maintain client libraries for developers who want to take advantage of:
|
|
||||||
|
|
||||||
- Idioms for InfluxDB requests, responses, and errors.
|
|
||||||
- Common patterns in a familiar programming language.
|
|
||||||
- Faster development and less boilerplate code.
|
|
||||||
|
|
||||||
These tutorials walk through using the InfluxDB API and
|
|
||||||
client libraries to build a modern application as you learn the following:
|
|
||||||
|
|
||||||
- InfluxDB core concepts.
|
|
||||||
- How the application interacts with devices and InfluxDB.
|
|
||||||
- How to authenticate apps and devices to the API.
|
|
||||||
- How to install a client library.
|
|
||||||
- How to write and query data in InfluxDB.
|
|
||||||
- How to use the InfluxData UI libraries to format data and create visualizations.
|
|
||||||
|
|
||||||
{{< children >}}
|
|
|
@ -9,7 +9,7 @@ menu:
|
||||||
influxdb_2_3:
|
influxdb_2_3:
|
||||||
identifier: client-library-starter-js
|
identifier: client-library-starter-js
|
||||||
name: JavaScript
|
name: JavaScript
|
||||||
parent: Client library starter
|
parent: Client library tutorials
|
||||||
influxdb/v2.3/tags: [api, javascript, nodejs]
|
influxdb/v2.3/tags: [api, javascript, nodejs]
|
||||||
---
|
---
|
||||||
|
|
|
@ -10,7 +10,7 @@ menu:
|
||||||
influxdb_2_3:
|
influxdb_2_3:
|
||||||
identifier: client-library-starter-py
|
identifier: client-library-starter-py
|
||||||
name: Python
|
name: Python
|
||||||
parent: Client library starter
|
parent: Client library tutorials
|
||||||
influxdb/v2.3/tags: [api, python]
|
influxdb/v2.3/tags: [api, python]
|
||||||
---
|
---
|
||||||
|
|
|
@ -3,8 +3,8 @@ title: Check if a value exists
|
||||||
seotitle: Use Flux to check if a value exists
|
seotitle: Use Flux to check if a value exists
|
||||||
list_title: Exists
|
list_title: Exists
|
||||||
description: >
|
description: >
|
||||||
Use the Flux `exists` operator to check if a record contains a key or if that
|
Use the `exists` operator to check if a row record contains a column or if a
|
||||||
key's value is `null`.
|
column's value is _null_.
|
||||||
influxdb/v2.3/tags: [exists]
|
influxdb/v2.3/tags: [exists]
|
||||||
menu:
|
menu:
|
||||||
influxdb_2_3:
|
influxdb_2_3:
|
||||||
|
@ -24,31 +24,26 @@ list_code_example: |
|
||||||
```
|
```
|
||||||
---
|
---
|
||||||
|
|
||||||
Use the Flux `exists` operator to check if a record contains a key or if that
|
Use the `exists` operator to check if a row record contains a column or if a
|
||||||
key's value is `null`.
|
column's value is _null_.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
p = {firstName: "John", lastName: "Doe", age: 42}
|
(r) => exists r.column
|
||||||
|
|
||||||
exists p.firstName
|
|
||||||
// Returns true
|
|
||||||
|
|
||||||
exists p.height
|
|
||||||
// Returns false
|
|
||||||
```
|
```
|
||||||
|
|
||||||
If you're just getting started with Flux queries, check out the following:
|
If you're just getting started with Flux queries, check out the following:
|
||||||
|
|
||||||
- [Get started with Flux](/{{< latest "flux" >}}/get-started/) for a conceptual overview of Flux and parts of a Flux query.
|
- [Get started with Flux](/{{< latest "flux" >}}/get-started/) for a conceptual overview of Flux and parts of a Flux query.
|
||||||
- [Execute queries](/influxdb/v2.3/query-data/execute-queries/) to discover a variety of ways to run your queries.
|
- [Execute queries](/influxdb/v2.4/query-data/execute-queries/) to discover a variety of ways to run your queries.
|
||||||
|
|
||||||
Use `exists` with row functions (
|
Use `exists` with row functions (
|
||||||
[`filter()`](/{{< latest "flux" >}}/stdlib/universe/filter/),
|
[`filter()`](/{{< latest "flux" >}}/stdlib/universe/filter/),
|
||||||
[`map()`](/{{< latest "flux" >}}/stdlib/universe/map/),
|
[`map()`](/{{< latest "flux" >}}/stdlib/universe/map/),
|
||||||
[`reduce()`](/{{< latest "flux" >}}/stdlib/universe/reduce/))
|
[`reduce()`](/{{< latest "flux" >}}/stdlib/universe/reduce/))
|
||||||
to check if a row includes a column or if the value for that column is `null`.
|
to check if a row includes a column or if the value for that column is _null_.
|
||||||
|
|
||||||
#### Filter null values
|
#### Filter null values
|
||||||
|
|
||||||
```js
|
```js
|
||||||
from(bucket: "example-bucket")
|
from(bucket: "example-bucket")
|
||||||
|> range(start: -5m)
|
|> range(start: -5m)
|
||||||
|
@ -56,6 +51,7 @@ from(bucket: "example-bucket")
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Map values based on existence
|
#### Map values based on existence
|
||||||
|
|
||||||
```js
|
```js
|
||||||
from(bucket: "default")
|
from(bucket: "default")
|
||||||
|> range(start: -30s)
|
|> range(start: -30s)
|
||||||
|
@ -70,6 +66,7 @@ from(bucket: "default")
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Ignore null values in a custom aggregate function
|
#### Ignore null values in a custom aggregate function
|
||||||
|
|
||||||
```js
|
```js
|
||||||
customSumProduct = (tables=<-) => tables
|
customSumProduct = (tables=<-) => tables
|
||||||
|> reduce(
|
|> reduce(
|
||||||
|
@ -86,3 +83,28 @@ customSumProduct = (tables=<-) => tables
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Check if a statically defined record contains a key
|
||||||
|
|
||||||
|
When you use the [record literal syntax](/flux/v0.x/data-types/composite/record/#record-syntax)
|
||||||
|
to statically define a record, Flux knows the record type and what keys to expect.
|
||||||
|
|
||||||
|
- If the key exists in the static record, `exists` returns `true`.
|
||||||
|
- If the key does not exist in the static record, because the record type is
|
||||||
|
statically known, `exists` returns an error.
|
||||||
|
|
||||||
|
```js
|
||||||
|
import "internal/debug"
|
||||||
|
|
||||||
|
p = {
|
||||||
|
firstName: "John",
|
||||||
|
lastName: "Doe",
|
||||||
|
age: 42,
|
||||||
|
}
|
||||||
|
|
||||||
|
exists p.firstName
|
||||||
|
// Returns true
|
||||||
|
|
||||||
|
exists p.height
|
||||||
|
// Returns "error: record is missing label height"
|
||||||
|
```
|
||||||
|
|
|
@ -10,4 +10,21 @@ menu:
|
||||||
influxdb/v2.4/tags: [api]
|
influxdb/v2.4/tags: [api]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
Follow step-by-step tutorials to build an Internet-of-Things (IoT) application with InfluxData client libraries and your favorite framework or language.
|
||||||
|
InfluxData and the user community maintain client libraries for developers who want to take advantage of:
|
||||||
|
|
||||||
|
- Idioms for InfluxDB requests, responses, and errors.
|
||||||
|
- Common patterns in a familiar programming language.
|
||||||
|
- Faster development and less boilerplate code.
|
||||||
|
|
||||||
|
In these tutorials, you'll use the InfluxDB API and
|
||||||
|
client libraries to build a modern application, and learn the following:
|
||||||
|
|
||||||
|
- InfluxDB core concepts.
|
||||||
|
- How the application interacts with devices and InfluxDB.
|
||||||
|
- How to authenticate apps and devices to the API.
|
||||||
|
- How to install a client library.
|
||||||
|
- How to write and query data in InfluxDB.
|
||||||
|
- How to use the InfluxData UI libraries to format data and create visualizations.
|
||||||
|
|
||||||
{{< children >}}
|
{{< children >}}
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
---
|
|
||||||
title: InfluxDB API client library starter
|
|
||||||
seotitle: Starter tutorial for InfluxDB API client libraries
|
|
||||||
description: Follow step-by-step tutorials to build an IoT dashboard with API client libraries in your favorite framework or language.
|
|
||||||
weight: 4
|
|
||||||
menu:
|
|
||||||
influxdb_2_4:
|
|
||||||
name: Client library starter
|
|
||||||
parent: Client library tutorials
|
|
||||||
influxdb/v2.4/tags: [api]
|
|
||||||
---
|
|
||||||
|
|
||||||
Follow step-by-step tutorials to build an Internet-of-Things (IoT) application with InfluxData client libraries and your favorite framework or language.
|
|
||||||
InfluxData and the user community maintain client libraries for developers who want to take advantage of:
|
|
||||||
|
|
||||||
- Idioms for InfluxDB requests, responses, and errors.
|
|
||||||
- Common patterns in a familiar programming language.
|
|
||||||
- Faster development and less boilerplate code.
|
|
||||||
|
|
||||||
These tutorials walk through using the InfluxDB API and
|
|
||||||
client libraries to build a modern application as you learn the following:
|
|
||||||
|
|
||||||
- InfluxDB core concepts.
|
|
||||||
- How the application interacts with devices and InfluxDB.
|
|
||||||
- How to authenticate apps and devices to the API.
|
|
||||||
- How to install a client library.
|
|
||||||
- How to write and query data in InfluxDB.
|
|
||||||
- How to use the InfluxData UI libraries to format data and create visualizations.
|
|
||||||
|
|
||||||
{{< children >}}
|
|
|
@ -9,7 +9,7 @@ menu:
|
||||||
influxdb_2_4:
|
influxdb_2_4:
|
||||||
identifier: client-library-starter-js
|
identifier: client-library-starter-js
|
||||||
name: JavaScript
|
name: JavaScript
|
||||||
parent: Client library starter
|
parent: Client library tutorials
|
||||||
influxdb/v2.4/tags: [api, javascript, nodejs]
|
influxdb/v2.4/tags: [api, javascript, nodejs]
|
||||||
---
|
---
|
||||||
|
|
|
@ -10,7 +10,7 @@ menu:
|
||||||
influxdb_2_4:
|
influxdb_2_4:
|
||||||
identifier: client-library-starter-py
|
identifier: client-library-starter-py
|
||||||
name: Python
|
name: Python
|
||||||
parent: Client library starter
|
parent: Client library tutorials
|
||||||
influxdb/v2.4/tags: [api, python]
|
influxdb/v2.4/tags: [api, python]
|
||||||
---
|
---
|
||||||
|
|
|
@ -3,8 +3,8 @@ title: Check if a value exists
|
||||||
seotitle: Use Flux to check if a value exists
|
seotitle: Use Flux to check if a value exists
|
||||||
list_title: Exists
|
list_title: Exists
|
||||||
description: >
|
description: >
|
||||||
Use the Flux `exists` operator to check if a record contains a key or if that
|
Use the Flux `exists` operator to check if a row record contains a column or if
|
||||||
key's value is `null`.
|
that column's value is `null`.
|
||||||
influxdb/v2.4/tags: [exists]
|
influxdb/v2.4/tags: [exists]
|
||||||
menu:
|
menu:
|
||||||
influxdb_2_4:
|
influxdb_2_4:
|
||||||
|
@ -24,17 +24,11 @@ list_code_example: |
|
||||||
```
|
```
|
||||||
---
|
---
|
||||||
|
|
||||||
Use the Flux `exists` operator to check if a record contains a key or if that
|
Use the `exists` operator to check if a row record contains a column or if a
|
||||||
key's value is `null`.
|
column's value is _null_.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
p = {firstName: "John", lastName: "Doe", age: 42}
|
(r) => exists r.column
|
||||||
|
|
||||||
exists p.firstName
|
|
||||||
// Returns true
|
|
||||||
|
|
||||||
exists p.height
|
|
||||||
// Returns false
|
|
||||||
```
|
```
|
||||||
|
|
||||||
If you're just getting started with Flux queries, check out the following:
|
If you're just getting started with Flux queries, check out the following:
|
||||||
|
@ -46,9 +40,10 @@ Use `exists` with row functions (
|
||||||
[`filter()`](/{{< latest "flux" >}}/stdlib/universe/filter/),
|
[`filter()`](/{{< latest "flux" >}}/stdlib/universe/filter/),
|
||||||
[`map()`](/{{< latest "flux" >}}/stdlib/universe/map/),
|
[`map()`](/{{< latest "flux" >}}/stdlib/universe/map/),
|
||||||
[`reduce()`](/{{< latest "flux" >}}/stdlib/universe/reduce/))
|
[`reduce()`](/{{< latest "flux" >}}/stdlib/universe/reduce/))
|
||||||
to check if a row includes a column or if the value for that column is `null`.
|
to check if a row includes a column or if the value for that column is _null_.
|
||||||
|
|
||||||
#### Filter null values
|
#### Filter null values
|
||||||
|
|
||||||
```js
|
```js
|
||||||
from(bucket: "example-bucket")
|
from(bucket: "example-bucket")
|
||||||
|> range(start: -5m)
|
|> range(start: -5m)
|
||||||
|
@ -56,6 +51,7 @@ from(bucket: "example-bucket")
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Map values based on existence
|
#### Map values based on existence
|
||||||
|
|
||||||
```js
|
```js
|
||||||
from(bucket: "default")
|
from(bucket: "default")
|
||||||
|> range(start: -30s)
|
|> range(start: -30s)
|
||||||
|
@ -70,6 +66,7 @@ from(bucket: "default")
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Ignore null values in a custom aggregate function
|
#### Ignore null values in a custom aggregate function
|
||||||
|
|
||||||
```js
|
```js
|
||||||
customSumProduct = (tables=<-) => tables
|
customSumProduct = (tables=<-) => tables
|
||||||
|> reduce(
|
|> reduce(
|
||||||
|
@ -86,3 +83,33 @@ customSumProduct = (tables=<-) => tables
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Check if a statically defined record contains a key
|
||||||
|
|
||||||
|
When you use the [record literal syntax](/flux/v0.x/data-types/composite/record/#record-syntax)
|
||||||
|
to statically define a record, Flux knows the record type and what keys to expect.
|
||||||
|
|
||||||
|
- If the key exists in the static record, `exists` returns `true`.
|
||||||
|
- If the key exists in the static record, but has a _null_ value, `exists` returns `false`.
|
||||||
|
- If the key does not exist in the static record, because the record type is
|
||||||
|
statically known, `exists` returns an error.
|
||||||
|
|
||||||
|
```js
|
||||||
|
import "internal/debug"
|
||||||
|
|
||||||
|
p = {
|
||||||
|
firstName: "John",
|
||||||
|
lastName: "Doe",
|
||||||
|
age: 42,
|
||||||
|
height: debug.null(type: "int"),
|
||||||
|
}
|
||||||
|
|
||||||
|
exists p.firstName
|
||||||
|
// Returns true
|
||||||
|
|
||||||
|
exists p.height
|
||||||
|
// Returns false
|
||||||
|
|
||||||
|
exists p.hairColor
|
||||||
|
// Returns "error: record is missing label hairColor"
|
||||||
|
```
|
||||||
|
|
Loading…
Reference in New Issue