Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

211
Views
Faltan datos al grabar el modelo en un archivo JSON

Soy principiante y trato de guardar el modelo todoModel en data.json , pero algunos elementos (title, description) no se guardan.

app.js

 const http = require("http"); const todoRouter = require("./routes/todo.router"); const server = http.createServer(todoRouter); const PORT = process.env.PORT || 3000; server.listen(PORT, () => console.log(`Server listening on http://localhost:${PORT}`) );

todo.router.js

 const url = require("url"); const todoController = require("../controllers/todo.controller"); const todoRouter = (req, res) => { const urlparse = url.parse(req.url, true); if (urlparse.pathname == "/todos" && req.method == "POST") { todoController.createTodo(req, res); } }; module.exports = todoRouter;

todo.controller.js

 const fs = require("fs"); class todoController { async createTodo(req, res) { req.on("data", (data) => { if (data) { todos.push(todoModel); fs.writeFile( "./data/data.json", JSON.stringify(todos, null, 2), (err) => { if (err) throw error; } ); } }); }}

todo.model.js

 const { v4: uuidv4 } = require("uuid"); const fs = require("fs"); const data = fs.readFileSync("./data/data.json"); const jsondata = JSON.parse(data); const title = jsondata.title; const description = jsondata.description; const todoModel ={ id: uuidv4(), title, description, dateOfCreate: new Date(), lastModified: new Date(), check: new Boolean(false), }; module.exports = todoModel;

El modelo todoModel en data.json se ve así:

 [ { "id": "cb996b22-d9d8-49ee-8e35-6f8bfc005268", "dateOfCreate": "2021-11-06T14:53:28.608Z", "lastModified": "2021-11-06T14:53:28.608Z", "check": false } ]
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

El title y description de tus valores no tienen asignada una clave en tu todoModel . Simplemente asigne estos valores a las claves adecuadas en su objeto.

 const todoModel ={ id: uuidv4(), title: title, // add key for title description: description, // and here add key for description dateOfCreate: new Date(), lastModified: new Date(), check: new Boolean(false), };

Pero el problema no acaba aquí. Su problema es que lee el archivo JSON, carga su contenido y luego vuelve a escribir el contenido sin ninguna modificación. En el archivo todo.controller.js , carga todoModel , que carga el contenido del archivo. Luego agrega este contenido a la matriz de todos y lo vuelve a escribir en el archivo. No haces ninguna modificación a todoModel , por lo que lo que hace es prácticamente nada.

about 4 years ago · Juan Pablo Isaza Report

0

Bueno, recomiendo exportar funciones y constantes y no variables u objetos que puedan cambiar. Sin embargo, preferiría usar una función aquí.

 function getTodoModel() { const data = fs.readFileSync("./data/data.json"); const jsondata = JSON.parse(data); const title = jsondata.title; const description = jsondata.description; return { id: uuidv4(), title, description, dateOfCreate: new Date(), lastModified: new Date(), check: new Boolean(false), } } module.exports = getTodoModel

Más tarde, simplemente importe su función y llámela:

 let todoModel = getTodoModel()

Las variables serán evaluadas

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!