【问题标题】:Fetch new data from sqlite database on reload重新加载时从 sqlite 数据库中获取新数据
【发布时间】: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


    【解决方案1】:

    Fetch 可能正在缓存响应。试试:

    fetch('/sensors.db', {
      method: "GET",
      "cache-control": "no-store"
    })
    

    【讨论】:

      猜你喜欢
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      • 1970-01-01
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多