Necesito su ayuda para sacar datos de una base de datos. Uso sql.js y db.exec entrega un objeto res:
const res = db.exec('select time_,temp from sensors where topic=\"/xx/sensors\" limit 10')res se ve así:
Array [ {…} ] 0: Object { columns: (2) […], values: (10) […] } columns: Array [ "time_", "temp" ] 0: "time_" 1: "temp" length: 2 values: Array(10) [ (2) […], (2) […], (2) […], … ] 0: Array [ "23:53:01", 19.51 ] 1: Array [ "23:55:01", 19.51 ] 2: Array [ "23:57:01", 19.5 ] 3: Array [ "23:59:01", 19.48 ] 4: Array [ "00:05:04", 19.47 ] 5: Array [ "00:07:04", 19.45 ] 6: Array [ "00:09:04", 19.43 ] 7: Array [ "00:11:04", 19.43 ] 8: Array [ "00:13:04", 19.36 ] 9: Array [ "00:15:04", 19.38 ] length: 10res es un objeto con matrices que tiene columnas. ¿Cómo puedo obtener el time_ para verse así:
const labels = ['00:13:04', '00:15:04', ...];y la temperatura en este formato:
data = [19.36, 19.38, ...];¿Podrías ayudarme? Saludos
Ejemplo, res es como sigue:
let res = [['1', 1], ['2', 2]]Entonces, sus valores requeridos serían:
let labels = res.map(arr => arr[0]); let data = res.map(arr => arr[1]);Su resultado es una matriz con un solo objeto que a su vez tiene dos columns de propiedades y values . Parece que desea asignar la matriz de values de este objeto a dos matrices individuales por índice, por lo que deberá acceder a esa propiedad de manera adecuada antes de la asignación:
const res = [{ columns: [], values: [] }]; const values = res[0].values; // or with destructuring const [{ values }] = res; Luego puede .map() sobre esta matriz dos veces
const res = [ { columns: ['time_', 'temp'], values: [['23:53:01', 19.51], ['23:55:01', 19.51], ['23:57:01', 19.5], ['23:59:01', 19.48], ['00:05:04', 19.47], ['00:07:04', 19.45], ['00:09:04', 19.43], ['00:11:04', 19.43], ['00:13:04', 19.36], ['00:15:04', 19.38],], }, ]; const values = res[0].values; const labels = values.map((arr) => arr[0]); const data = values.map((arr) => arr[1]); console.log('labels: ', labels); console.log('data: ', data); o use un solo paso en un ciclo for (aquí usando for...of y desestructurando cada tupla)
const res = [ { columns: ['time_', 'temp'], values: [['23:53:01', 19.51], ['23:55:01', 19.51], ['23:57:01', 19.5], ['23:59:01', 19.48], ['00:05:04', 19.47], ['00:07:04', 19.45], ['00:09:04', 19.43], ['00:11:04', 19.43], ['00:13:04', 19.36], ['00:15:04', 19.38],], }, ]; const labels = []; const data = []; for (const [label, datum] of res[0].values) { labels.push(label); data.push(datum); } console.log('labels: ', labels); console.log('data: ', data);