Soy algo nuevo con express, actualmente estoy trabajando con thedogapi, estoy haciendo el backend y necesito hacer un GET a una parte exacta de la api (los temperamentos) que me está trayendo muchos problemas, un ejemplo de la API es:
}, "id": 1, "name": "Affenpinscher", "bred_for": "Small rodent hunting, lapdog", "breed_group": "Toy", "life_span": "10 - 12 years", "temperament": "Stubborn, Curious, Playful, Adventurous, Active, Fun-loving", "origin": "Germany, France", "reference_image_id": "BJa4kxc4X", "image": { "id": "BJa4kxc4X", "width": 1600, "height": 1199, "url": "https://cdn2.thedogapi.com/images/BJa4kxc4X.jpg" }Como pueden ver, mi problema es que solo es una cadena con palabras dentro, la cosa aquí sería extraer solo los temperamentos para poder guardarlos en mi base de datos una vez extraídos, pero la pregunta es, ¿cómo podría hacer eso? He estado intentando algunas cosas, pero parece que no funciona... Un código que estaba intentando era
const getTemp = await Temperament.findAll() if (getTemp.length === 0){ const apiAxios = await axios.get(`https://api.thedogapi.com/v1/breeds?api_key=${API_KEY}`) const infoToGet = await apiAxios.data?.map(el => { console.log(el.temperament?.split(",").map(el => el.trim()).toString()) return { temperament: [el.temperament]?.join().split(",").map(el => el.trim()).toString() } }) const dbSave = await Temperament.bulkCreate(infoToGet) }Descarté por completo ese código ya que no se logró lo que quería, pero la parte de los temperamentos funcionaba de acuerdo con el registro de la consola, pero aún no funcionaba, así que recibí una especie de referencia de ayuda, pero esto no lo lograría ya que está usando métodos de matriz... Te mostraré (el siguiente código debería funcionar si fuera una matriz...)
router.get("/temperaments", async (req, res) => { const temperamentsApi = await axios.get(`https://api.thedogapi.com/v1/breeds?api_key=${API_KEY}`) const temperaments = temperamentsApi.data.map( el => el.temperament) const tempEach = temperaments.map(el => { for (let i = 0; i < el.length; i++) return el[i]}) console.log(tempEach) tempEach.forEach(el => { Temperament.findOrCreate({ where: { temperament: el } }) }) const allTemperaments = await Temperament.findAll() res.send(allTemperaments) })¿Cómo harías que esto último funcione solo en la parte del TEMPERAMENTO? lo siento si fue un poco largo, soy nuevo en todo esto y realmente estoy atrapado aquí: s
Según la referencia de la API:
https://docs.thedogapi.com/api-reference/breeds/breeds-list
Le doy un ejemplo para su referencia, me refiero a su código, la variable temperamentsApi almacena el resultado de la API, por lo que el código de extracción debería ser el siguiente.
let result=[]; temperamentsApi.data.forEach(datum=>{ result.push(datum.temperament); }); console.log(result);