Logré obtener datos del sensor en una base de datos sqlite3. Cada 2 minutos aparecen nuevos valores en la base de datos. Ahora quiero mostrarlo con chart.js y, por lo tanto, hacer uso de sql.js. El código que uso es:
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]); })Funciona bien al principio, pero luego me di cuenta de que los valores en los arreglos labelx, y, y y2 no son los más nuevos, les falta alrededor de medio día. Los nuevos valores siempre aparecen en la base de datos. Creo que tiene algo que ver con Promise.all() y .then, pero desafortunadamente no sé mucho sobre js. El código se ejecuta cada vez que el sitio se carga o recarga, incluso si uso Strg+F5 para forzar una recarga completa, sin almacenar en caché, permanece igual. ¿Me puedes ayudar? ¡Gracias!
=== EDITAR ===
Adapté tu sugerencia:
const dataPromise = fetch(( '/db.db', { method: "GET", "cache-control": "no-store"} )) .then(res => res.arrayBuffer())´Lamentablemente me sale el error:
Error no capturado (en promesa): el archivo no es una base de datos
la línea correspondiente:
const res = db.exec('seleccione x de db;')
Fetch podría estar almacenando en caché las respuestas. Probar:
fetch('/sensors.db', { method: "GET", "cache-control": "no-store" })