重新加载时从 sqlite 数据库中获取新数据
Posted
技术标签:
【中文标题】重新加载时从 sqlite 数据库中获取新数据【英文标题】:Fetch new data from sqlite database on reload 【发布时间】: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 来强制进行完整的、未缓存的重新加载,它也保持不变。你能帮助我吗?谢谢!
【问题讨论】:
【参考方案1】:Fetch 可能正在缓存响应。试试:
fetch('/sensors.db',
method: "GET",
"cache-control": "no-store"
)
【讨论】:
以上是关于重新加载时从 sqlite 数据库中获取新数据的主要内容,如果未能解决你的问题,请参考以下文章
如何在android中启动活动时从sqlite数据库中删除所有行(数据)
在几秒钟内重新加载 UiPageViewController