Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

Problema data.forEach

Tengo un problema con el data.forEach mi código esta igual que el del profe pero me sigue dando el error de que data.forEach is not a function

const crearNuevaLinea = (nombre, email) => {
    const linea = document.createElement("tr")
    const contenido =
         `
            <td class="td" data-td>${nombre}</td>
            <td>${email}</td>
            <td>
              <ul class="table__button-control">
                <li>
                  <a
                    href="../screens/editar_cliente.html"
                    class="simple-button simple-button--edit"
                    >Editar</a
                  >
                </li>
                <li>
                  <button
                    class="simple-button simple-button--delete"
                    type="button"
                  >
                    Eliminar
                  </button>
                </li>
              </ul>
            </td>
        `;
        linea.innerHTML = contenido;
        return linea;
};

const table = document.querySelector("[data-table]");

const http = new XMLHttpRequest();

// Abrir http (metodo, url)

//CRUD - METODOS HTTP
//Create - POST
//Read - GET
//Update - PUT/PATCH
//Delete - DELETE

http.open("GET","http://localhost:3000/profile");

http.send();

http.onload = () => {
    const data = JSON.parse(http.response);
    data.forEach((perfil) => {
        const nuevaLinea = crearNuevaLinea(perfil.nombre, perfil.email);
        table.appendChild(nuevaLinea);
    })
};
1 respuesta
solución!

¡Hola Guillermo!

El error que estás recibiendo "data.forEach is not a function" significa que la variable "data" no es una matriz y, por lo tanto, no tiene acceso al método "forEach".

Asegúrate de que la respuesta que recibes del servidor es una matriz. Si no es una matriz, puedes intentar convertirla a una matriz utilizando el método "Array.from()" o "Array.prototype.slice.call()".

Por ejemplo:

const data = JSON.parse(http.response);
const dataArray = Array.from(data);
dataArray.forEach((perfil) => {
    const nuevaLinea = crearNuevaLinea(perfil.nombre, perfil.email);
    table.appendChild(nuevaLinea);
})

Espero que esto te ayude a solucionar tu problema. ¡Buena suerte y sigue adelante!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios! :)