Así que tengo una API externa que me gustaría filtrar. Parte de la API muestra esta información (en formato JSON como ejemplo:
{ "data": [ { "first_name": "Fiona", "last_name": "Smith", "phone_number": "987-3595-89", "mental_health_referral": false, "date_last_mental_health_referal": "02/09/2018T00:00:00.0000Z", "legal_councel_referal": true, "CHW_id": 6866318 }, { "first_name": "Richard", "last_name": "Stewart", "phone_number": "281-0394-41", "mental_health_referral": true, "date_last_mental_health_referal": "03/23/2018T00:00:00.0000Z", "legal_councel_referal": false, "CHW_id": 9241074 }, } Ahora estoy usando axios para llamar a todos estos datos. Este es el código:
//endpoint that will fetch data from an external API app.get("/externalapi/", (req, res, next) => { let apiURL = 'https://test.herokuapp.com/api/v1/data'; axios.get(apiURL) .then(response => { res.status(200).json(response.data); }) .catch((err) => { res.status(500).json({ message: err }); }); });Sin embargo, me gustaría filtrarlo para que un extremo específico me muestre solo la información de Fiona y solo me muestre el nombre, el apellido y el número de teléfono de Fiona. Intenté filtrarlo usando este punto final
app.get("/externalapi/:first_name", (req, res, next) => {Sin embargo, solo me da errores cuando lo pruebo en Postman. ¿Qué me estoy perdiendo?
Puede escribir una función general que tomará la matriz y el nombre de la persona que desea devolver:
const data = { data: [ { "first_name": "Fiona", "last_name": "Smith", "phone_number": "987-3595-89", "mental_health_referral": false, "date_last_mental_health_referal": "02/09/2018T00:00:00.0000Z", "legal_councel_referal": true, "CHW_id": 6866318 }, { "first_name": "Richard", "last_name": "Stewart", "phone_number": "281-0394-41", "mental_health_referral": true, "date_last_mental_health_referal": "03/23/2018T00:00:00.0000Z", "legal_councel_referal": false, "CHW_id": 9241074 }, ] } const getData = (arr, name) => { const nameData = arr.filter(el => (el.first_name === name)) const returnedObj = nameData[0] return returnedObj } const filteredData = getData(data.data, "Fiona") const {first_name, last_name, phone_number} = filteredData console.log(first_name) console.log(last_name) console.log(phone_number)puede intentar filtrar los datos de respuesta usando el primer nombre
const userData = response.data.filter((selection)=>{ return selection.first_name === 'Fiona';});
consola.log(datosusuario);