Quiero hacer una página ".json" con los datos que saqué. código
app.get("/:user_id", async (req, res) => { let items = []; await msgData.find({ userId: req.params.user_id }).then((e) => { e.map((e) => { for (const [key, value] of e.msgChannelsMsgCount.entries()) { items.push({ guildId: e.guildId, channel: key, msgCount: value }); } }); }); res.write(JSON.parse(items)); });
esquema de mangosta
import { mongoose } from "./../../dist/tools.js"; const { model, Schema } = mongoose; const schema = new Schema({ userId: String, guildId: String, msgCount: Number, msgChannelsMsgCount: Map, }); const msgdatas = model("msgdatas", schema); export default msgdatas;
Salida Mongo
_id:626f1c8e9abf489a1bed71c1 userId:"337800833888681987" guildId:"959946061915492373" msgCount:30 msgChannelsMsgCount:Object 959946062095851523:7 970510925205475429:19 965236713314213889:1 __v:0
indefinido:1 [objeto Objeto],[objeto Objeto],[objeto Objeto],[objeto Objeto] ^
SyntaxError: Token o inesperado en JSON en la posición 1 en JSON.parse () en file:///C:/Users/imkys/OneDrive/Masa%C3%BCst%C3%BC/app/server/app.js:14 :18 en processTicksAndRejections (nodo:internal/process/task_queues:96:5)
La aplicación [nodemon] se bloqueó: esperando cambios en el archivo antes de comenzar...
res.write(JSON.parse(items));
para res.write(items);
funcionaría bien.
probar:
app.get("/:user_id", async (req, res) => { let items = []; await msgData.find({ userId: req.params.user_id }).then((e) => { e.map((e) => { for (const [key, value] of e.msgChannelsMsgCount.entries()) { items.push({ guildId: e.guildId, channel: key, msgCount: value }); } }); }); res.write(JSON.stringify(items, null, ' ')); });
¡Bienvenido a Stack Overflow!
Cuando usa JSON.parse(<input>)
, lee la entrada de cadena y luego convierte esa cadena en formato de objeto JS.
Como ejemplo:
{ "body": 5 } //becomes { body: 5 }
lo que te permite usar el cuerpo de los objetos como object.body
Para enviar datos json, debe usar el método expreso incorporado res.json(items)