Tengo un servidor local que estoy usando para practicar y aprender. En él, tengo una serie de objetos:
let movies = [ //1 { title: 'Lord of the Rings', actor: 'Orlando', genre: 'adventure', director: 'person' } , //2 { title: 'Harry Potter', actor: 'Daniel Radcliffe', genre: 'Fantasy', director: 'person', movie_id: "7" } , //3 { title: 'The Prestige', actor: 'Christian Bale', genre: 'adventure', director: 'person' } , //4 { title: 'The Dark Knight', actor: 'Christian Bale', genre: 'adventure', director: 'person' } , //5 { title: 'Pirates of the Caribbean', actor: 'Orlando', genre: 'adventure', director: 'person' } ]en el que puedo devolver un objeto específico basado en el valor de URL ingresado:
ex. http://localhost:8081/movies?actor=Orlando
devolverá el primer objeto que contenga la clave/valor del objeto "actor: 'Orlando'"
mientras usa este código:
app.get("/movies", (req, res) => { if (req.query.title) { res.json(movies.find((movie) => { return movie.title === req.query.title })); } if (req.query.actor) { res.json(movies.find((movie) => { return movie.actor === req.query.actor })); } if (req.query.director) { res.json(movies.find((movie) => { return movie.director === req.query.director })); } res.json(movies); });Sin embargo, esto solo devuelve el primer objeto que encuentra con el valor solicitado. ¿Qué debo agregar/cambiar para que devuelva todas las películas del mismo actor/directo/género, etc.?
El retorno ideal cuando escribo la URL antes mencionada debería ser:
{ title: 'Lord of the Rings', actor: 'Orlando', genre: 'adventure', director: 'person' } { title: 'Pirates of the Caribbean', actor: 'Orlando', genre: 'adventure', director: 'person' }gracias por todo y cualquier ayuda!
El problema es que desea devolver una matriz de objetos json. Al utilizar el método de find , solo recibirá el primer elemento encontrado. Intente usar la función de filter .
Ejemplo:
if (req.query.actor) { res.json(movies.filter((movie) => { return movie.actor === req.query.actor })); }Resultado para http://localhost:8081/movies?actor=Orlando:
[{ title: 'Lord of the Rings', actor: 'Orlando', genre: 'adventure', director: 'person' } { title: 'Pirates of the Caribbean', actor: 'Orlando', genre: 'adventure', director: 'person' }]