【发布时间】:2022-01-07 11:30:46
【问题描述】:
我设法将传感器数据输入到 sqlite3 数据库中。数据库中每 2 分钟出现一次新值。现在我想用 chart.js 显示它,因此使用 sql.js 我使用的代码是:
const config_sqljs = {
locateFile: filename => (
'https://cdnjs.cloudflare.com/ajax/libs/sql.js/1.5.0/sql-wasm.wasm'
)
}
const sqlPromise = initSqlJs(config_sqljs)
const dataPromise = fetch((
'/sensors.db'
))
.then(res => res.arrayBuffer())
Promise.all([sqlPromise, dataPromise])
.then(([SQL, buf]) => {
const db = new SQL.Database(new Uint8Array(buf))
//const res = db.exec('select time_,temp,humi from sensors where topic=\"/x/sensors\"')
const res = db.exec('select time_,temp,humi from sensors where topic =\"/y/sensors\" and (date=\"29.11.2021\" or date=\"30.11.2021\" or date=\"01.12.2021\");')
const values = res[0].values;
let labelx = values.map((arr) => arr[0]);
let y = values.map((arr) => arr[1]);
let y2 = values.map((arr) => arr[2]);
})
一开始效果很好,但后来我意识到数组 labelx、y 和 y2 中的值不是最新的,它们落后了大约半天。新值总是出现在数据库中。我认为它与 Promise.all() 和 .then 有关系,但不幸的是我对 js 了解不多。每次站点加载或重新加载时都会执行代码,即使我使用 Strg+F5 来强制进行完整的、未缓存的重新加载,它也保持不变。你能帮助我吗?谢谢!
【问题讨论】:
标签: javascript sqlite reload