Básicamente, puedo obtener la lista completa del archivo json, pero no puedo averiguar cómo obtener un elemento concreto. Cuando uso cartero, la ruta: http://localhost:3000/book/2, por ejemplo, devuelve el código de libro que no existe
app.get('/book/list', (req, res) => { const books = getBookData() res.send(books) }) app.get("/book/:code", (req, res) => { const code = req.params.code const existsBook = getBookData(); const filterBook = existsBook.filter(book => book.code !== code) if (existsBook.length === filterBook.length) { return res.status(400).send({error: true, msg: 'bookcode does not exist'}) } }) const getBookData = () => { const jsonData = fs.readFileSync('books.json') return JSON.parse(jsonData.toString()) }aquí está el archivo json
[{"code":2,"name":"Name of the wind","author":"Patrrick Rothfuss"},{"code":3,"name":"Wise Man's Fear","author":"Patrrick Rothfuss"},{"code":4,"name":"The Doors of Stone","author":"Patrrick Rothfuss"}]Esto puede deberse a que req.query.code es por defecto una cadena, no un número. Esto me hizo tropezar una vez.
Una solución confiable sería usar parseInt.
const code = parseInt(req.params.code)¿No funciona? También puedes probar con un Número tradicional ()
const code = Number(req.params.code)