Estoy intentando consolar. registrar algunos valores JSON de una carga útil de llamada a la API de OpeanSea. Puedo alcanzar con éxito el punto final como se ve en la consola cuando ejecuto esto:
await fetch(`https://api.opensea.io/api/v1/collections?asset_owner=${currentAccount}&offset=0&limit=300`, options) .then(response => response.json()) .then(response => console.log("collection owned by current address", response))
pero cuando trato de registrar solo un atributo del objeto de respuesta:
await fetch(`https://api.opensea.io/api/v1/collections?asset_owner=${currentAccount}&offset=0&limit=300`, options) .then(response => response.json()) .then(({ assetts }) => { assetts.forEach((attributes) => { console.log(attributes.name) }) })
ya veo
TypeError: Cannot read properties of undefined (reading 'forEach')
Es
assetts
un nombre arbitrario para iterar? creo que esto es lo que no entiendo
Debe conocer la estructura de json y apuntar a los atributos requeridos. Como en su caso, su matriz de colecciones, que es una matriz de objetos, y cada objeto contiene una clave de nombre para que pueda apuntar a una clave como:
await fetch(`https://api.opensea.io/api/v1/collections?asset_owner=${currentAccount}&offset=0&limit=300`, options) .then((response) => { return response.json(); }) .then((assetts) => { assetts.collections.forEach((attributes) => { console.log(attributes.name); }); }) .catch((error) => { console.log({ error }); });
En su primer bloque, debería tener que devolver la respuesta después de analizarlo, si desea utilizar los datos analizados en el siguiente bloque.
Sugerencia: es una buena práctica si también maneja el error colocando el bloque catch después del bloque then.