Cuando intento cambiar mis objetos en mi matriz, no funciona. Quiero poder llamarlo en el cartero con un nuevo valor adjunto al elemento que llamo. ayuda por favor es una tarea para hoy
captura de pantalla del cartero
const express = require("express"); const {emitWarning} = require("process"); // laver en variabel hvor sætter en execution af express til den const app = express() //Nedenunder laver jeg en port med nummer 8080 som vil bruges igennem hele opgaven const PORT = 8081; //bruger console.log til at printe beskeden og det gør jeg ved hjælp af en listen method app.listen(PORT, () => console.log("server lytter på port 8080")) //Opgave B //jeg laver min array hvor jeg putter kategorierne ind samt antallet til hver kategori var besatning = [ {id:0, kategori: 'Køer', antal: 50 }, {id:1, kategori: 'Hunde', antal: 1 }, {id:2, kategori: 'Grise', antal: 100 }, {id: 3, kategori: 'Får', antal: 20 }, ]; app.put('/ny_besætning/:kategori/:antal', (req, res)=> { if (req.params.kategori in besatning){ besatning[req.params.kategori] = req.params.antal; res.json(besatning); } else{ res.sendStatus(404) } });
Parece que intenta acceder a una serie de objetos como si fuera una serie de cadenas.
Prueba y cambia esto:
if (req.params.kategori in besatning){ besatning[req.params.kategori] = req.params.antal; res.json(besatning); } else{ res.sendStatus(404) }
A esto
const result = besatning.find(item => item.kategori === req.params.kategori); if (result) { res.json(result); } else { res.sendStatus(404); }
Esto devolverá el artículo coincidente. Y debe llamarse con una solicitud GET.
Las solicitudes PUT son para actualizar un artículo, generalmente por una identificación. Su URL debe ser algo así como "/ny_besætning/:id" y luego use el filtro de búsqueda para obtener el elemento según la identificación. Al actualizar el elemento, debe hacerse a través de la carga útil (es decir, en cartero es la etiqueta del cuerpo) en el formato de un objeto completo, es decir: {id: 0, kategori: 'actualizado', antal: 9999}