Estoy tratando de hacer una consulta desde mi base de datos a través de la URL, pero la respuesta solo devuelve todas mis personas.
exports.getPersonByName = async (req, res) => { const query = req.query.q try{ const person = await pool.query('SELECT * FROM person WHERE firstname LIKE $1', [query]) res.status(200).json(person) } catch(error) { res.status(500).json({ message: error.message }) }}
Hay dos problemas con su implementación.
urlencoded en el archivo server.js (agréguelo después de la app.use(express.json()) ): app.use(express.urlencoded({ extended: true }));getPersonByName en person.route.js . No necesita especificar parámetros de consulta en la ruta en sí. Actualmente, su ruta GET /person es utilizada por la función getAllPersons , por lo que tiene dos opciones:getAllPersons y getPersonByName en la misma ruta GET /person y recupere el parámetro si está presente. Mantendrá solo la ruta y las funciones getAllPersons y manejará el parámetro q allí
exports.getAllPersons = async (req, res) => { const query = req.query.q || ''; try { const person = await pool.query( 'SELECT * FROM person WHERE firstname LIKE $1', [query] ); res.status(200).json(person); } catch (error) { res.status(500).json({ message: error.message }); } };getPersonByName , por ejemplo: router.get('/byname', controller.getPersonByName) Y envíe sus solicitudes a /person/byname?q=Example (manteniendo los métodos getPersonByName y getAllPersons tal como están definidos)