Traté de crear una variable json vacía como esta;
var myJSON = { measurements: {} };y a continuación, traté de insertar datos en json y escribir ese json en el archivo chart.json pero ocurrió un error:
TypeError [ERR_INVALID_ARG_TYPE]: el argumento de "datos" debe ser de tipo cadena o una instancia de Buffer, TypedArray o DataView. Recibió una instancia de Objeto
connection.query('SELECT Temprature,Humidity, Time from miTemp1', function (error, results, fields) { if (error) throw error; let i = 0, j = 0; console.log(typeof (results)) while (i < results.length) { let myDate = new Date(results[i].Time * 1000); // console.log('Temp: ' + results[i].Temprature, 'Humidty:' + results[i].Humidity, 'Time: ' + myDate.toLocaleString()); measurements[i] = results[i]; i += 510; j++; } myJSON.measurements = JSON.stringify(measurements); console.log(typeof(myJSON)); console.log(myJSON); console.log(new Date().toLocaleString() + ' Number of measurement: ' + j); try { fs.writeFileSync('./chart.json', myJSON); console.log("JSON data is saved."); } catch (error) { console.error(error); } }); Si creo una variable json como var myJSON = {} no hay problema. ¿Por qué está pasando esto? Gracias por la ayuda ^-^
EDITAR:
Aquí están los datos de mi JSON.
{ "0": { "Temprature": 25.88, "Humidity": 43, "Time": 1628164626 }, "510": { "Temprature": 26.22, "Humidity": 45, "Time": 1628169522 }, SOLUCIÓN: Todo lo que necesito hacer es cambiar myJSON.measurements = JSON.stringify(measurements); a myJSON.measurements = measurements; y encadenar todo el objeto.
No puede simplemente escribir un objeto en un archivo. Primero debe serializarlo con JSON.stringify() :
fs.writeFileSync('./chart.json', JSON.stringify(myJSON)); Tampoco necesita serializar la propiedad de measurements , ya que serializa todo el objeto. Puedes reemplazar esto:
myJSON.measurements = JSON.stringify(measurements);con este:
myJSON.measurements = measurements;