使用 Node 时查询不返回数据,但从控制台返回数据 | Influx数据库
Data not returning from query when using Node but does from console | InfluxDB
我有一个 Node.js 应用程序,我正在尝试查询 InfluxDB 的云产品,我已经设置好它,所以我可以很好地写入数据,现在我需要查询部分。我的数据包含一些值 - 或者无论如何都会 - 我有经过的时间、服务和 serviceID。
这是我在运行之前输出的查询
fluxValue: 'from(bucket: "perf_mon")\n' +
'|> range(start: duration(v: "-7d"))\n' +
'|> filter(fn: (r) => r["_measurement"] == "elapsedtime")\n' +
'|> filter(fn: (r) => r["_field"] == "elapsedtime")\n' +
'|> filter(fn: (r) => r["serviceADD"] == "service")\n' +
'|> filter(fn: (r) => r["abcdxyz"] == "serviceID")
这是来自查询生成器
from(bucket: "perf_mon")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "elapsedTime")
|> filter(fn: (r) => r["_field"] == "elapsedTime")
|> filter(fn: (r) => r["serviceADD"] == "service")
|> filter(fn: (r) => r["abcdxyz"] == "serviceID")
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "mean")
这是我的完整代码 - 仅在一个文件中用于测试模式。
const queryApi = new InfluxDB({url, token}).getQueryApi(org)
const start = fluxDuration('-7d')
const measurement = 'elapsedtime'
const service = 'serviceADD'
const serviceID = 'abcdxyz'
const fluxQuery = flux`from(bucket: "${bucket}")
|> range(start: ${start})
|> filter(fn: (r) => r["_measurement"] == "${measurement}")
|> filter(fn: (r) => r["_field"] == "${measurement}")
|> filter(fn: (r) => r["${service}"] == "service")
|> filter(fn: (r) => r["serviceID"] == "serviceID")`
console.log('query:', fluxQuery)
console.log('*** QUERY ROWS ***')
queryApi.queryRows(fluxQuery, {
next(row, tableMeta) {
console.log('Row:', row)
const o = tableMeta.toObject(row)
console.log(JSON.stringify(o, null, 2))
console.log(
`${o._time} ${o._measurement} in '${o.location}' (${o.example}): ${o._field}=${o._value}`
)
},
error(error) {
console.error(error)
console.log('\nFinished ERROR')
},
complete() {
console.log('\nFinished SUCCESS')
},
})
我从包 @influxdata/influxdb-client
的 github 存储库中的示例中获得了 95% 的代码
我的问题是我想知道如何做到这一点,以便我可以查询 InfluxDB 并以我可以处理或直接发送到我的前端的格式取回我的数据。我在生成它的代码 and/or 查询中缺少什么,所以我无法通过我的脚本或通过 InfluxDB 云控制台取回数据?
我最终自己解决了这个问题,这就是我得到的查询
const fluxQuery = flux`from(bucket: "${bucket}")
|> range(start: ${start}, stop: now())
|> filter(fn: (r) => r["_measurement"] == "${measurement}")
|> filter(fn: (r) => r["${serviceID}"] == "serviceID")
|> filter(fn: (r) => r["_field"] == "${measurement}")
我有一个 Node.js 应用程序,我正在尝试查询 InfluxDB 的云产品,我已经设置好它,所以我可以很好地写入数据,现在我需要查询部分。我的数据包含一些值 - 或者无论如何都会 - 我有经过的时间、服务和 serviceID。
这是我在运行之前输出的查询
fluxValue: 'from(bucket: "perf_mon")\n' +
'|> range(start: duration(v: "-7d"))\n' +
'|> filter(fn: (r) => r["_measurement"] == "elapsedtime")\n' +
'|> filter(fn: (r) => r["_field"] == "elapsedtime")\n' +
'|> filter(fn: (r) => r["serviceADD"] == "service")\n' +
'|> filter(fn: (r) => r["abcdxyz"] == "serviceID")
这是来自查询生成器
from(bucket: "perf_mon")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "elapsedTime")
|> filter(fn: (r) => r["_field"] == "elapsedTime")
|> filter(fn: (r) => r["serviceADD"] == "service")
|> filter(fn: (r) => r["abcdxyz"] == "serviceID")
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "mean")
这是我的完整代码 - 仅在一个文件中用于测试模式。
const queryApi = new InfluxDB({url, token}).getQueryApi(org)
const start = fluxDuration('-7d')
const measurement = 'elapsedtime'
const service = 'serviceADD'
const serviceID = 'abcdxyz'
const fluxQuery = flux`from(bucket: "${bucket}")
|> range(start: ${start})
|> filter(fn: (r) => r["_measurement"] == "${measurement}")
|> filter(fn: (r) => r["_field"] == "${measurement}")
|> filter(fn: (r) => r["${service}"] == "service")
|> filter(fn: (r) => r["serviceID"] == "serviceID")`
console.log('query:', fluxQuery)
console.log('*** QUERY ROWS ***')
queryApi.queryRows(fluxQuery, {
next(row, tableMeta) {
console.log('Row:', row)
const o = tableMeta.toObject(row)
console.log(JSON.stringify(o, null, 2))
console.log(
`${o._time} ${o._measurement} in '${o.location}' (${o.example}): ${o._field}=${o._value}`
)
},
error(error) {
console.error(error)
console.log('\nFinished ERROR')
},
complete() {
console.log('\nFinished SUCCESS')
},
})
我从包 @influxdata/influxdb-client
我的问题是我想知道如何做到这一点,以便我可以查询 InfluxDB 并以我可以处理或直接发送到我的前端的格式取回我的数据。我在生成它的代码 and/or 查询中缺少什么,所以我无法通过我的脚本或通过 InfluxDB 云控制台取回数据?
我最终自己解决了这个问题,这就是我得到的查询
const fluxQuery = flux`from(bucket: "${bucket}")
|> range(start: ${start}, stop: now())
|> filter(fn: (r) => r["_measurement"] == "${measurement}")
|> filter(fn: (r) => r["${serviceID}"] == "serviceID")
|> filter(fn: (r) => r["_field"] == "${measurement}")