javascript - 使用 Node 时未从查询返回数据,但从控制台返回数据 | 涌入数据库
问题描述
我有一个 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')
},
})
我从包的 github 存储库中的示例中获得了 95% 的代码@influxdata/influxdb-client
我的问题是我想知道如何制作它,以便我可以查询 InfluxDB 并以一种格式取回我的数据,然后我可以处理或直接发送到我的前端。我在代码和/或查询中遗漏了什么,所以我无法通过我的脚本或 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}")
推荐阅读
- mongodb - 使用 MongoDb,导入 bson 是否比 json 更高效?
- bash - 在这种情况下,stdio 缓冲区如何工作?
- javascript - 从解析的 json 中获取数组元素返回 undefined
- events - Blazor onpointerenter 事件未触发
- neo4j - Neo4J Plugin Graphaware TimeTree:调用 ga.timetree 时出现问题
- file - POSIX 如何区分文件和目录?
- mysql - 来自多对多表中两个外键的 JPA 复合键
- websocket - 使用 ws 向不和谐机器人发送消息
- reactjs - 反应错误:setState - setInterval 同时
- php - 在一个 ActiveForm 上更新多个模型数据