Me gustaría devolver una matriz de objetos JSON desde esta función, pero tengo problemas con el formato. Soy nuevo en Node.js y espero entenderlo mejor.
function getItems (callback) { connection.query(SQL_getItems, (err, results) => { if (err) { callback(err); return; } callback(null, results.map((item) => `{'name': '${item.name}', 'value': '${item.value}'}`)); }); }El JSON actual se ve así:
["name: test, value: 1","name: test2, value: 0"]Lo que quiero es una matriz de objetos JSON.
[{"name": "test","value": "1"},{"name": "test2","value": "0"}]He intentado ajustar el formato, pero no puedo hacerlo del todo bien. Probé JSON.parse pero ya es JSON válido (pero no ideal).
En realidad, con el uso de una cadena de plantilla como esta:
`{'name': '${item.name}', 'count': '${item.value}'}` la función de map devolverá una matriz de cadena, eso es lo que tienes. Para devolver un objeto JSON como se esperaba, creo que su código debería ser:
results.map(item => JSON.stringify({name: item.name, count: item.value}))
p/s: si no recuerdo mal, puede pasar el encabezado de aceptación como application/json para realizar su trabajo automáticamente con res.send({<JS object>}) .
ACTUALIZADO : ¿Su resultado se ve así? Lo intenté pero obtuve un resultado diferente al suyo:
Gracias a @thelonglqd por indicarme la dirección correcta. El problema era que los resultados ya estaban en el formato que necesitaba, así que los estaba codificando dos veces.
function getItems (callback) { connection.query(SQL_getItems, (err, results) => { if (err) { callback(err); return; } callback(null, JSON.stringify(results)); }); }