1
respuesta

[Duda] no me guarda el nombre ni el email

hola!

estuve leyendo el foro a ver si conseguia solución pero no he podido dar con el fallo... No me esta guardando los datos que se explican en esta clase... alguien me podría ayudar a ver donde estoy errando?

muchas gracias!

Registro_controller.js

import { clientServices } from "../service/client-service.js";

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

formulario.addEventListener("submit", (evento) => {
  evento.preventDefault();
  const nombre = document.querySelector('[name = "nombre"]').value;
  const email = document.querySelector('[name = "email"]').value;
  clientServices
    .crearCliente(nombre, email)
    .then(() => {
      window.location.href = "/screens/registro_completado.html";
    })
    .catch((err) => console.log(err));
});

Cliente_controller.js

import { clientServices } from "../service/client-service.js";

//backticks
const crearNuevaLinea = (nombre, email, id) => {
  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" id="${id}">
            Eliminar
          </button>
        </li>
      </ul>
    </td>
  `;
  linea.innerHTML = contenido;
  const btn = linea.querySelector("button");
  btn.addEventListener("click", () => {
    const id = btn.id;
    clientServices
      .eliminarCliente(id)
      .then((respuesta) => {
        console.log(respuesta);
      })
      .catch((err) => alert("Ocurrió un error"));
  });

  return linea;
};

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

clientServices
  .listaClientes()
  .then((data) => {
    data.forEach(({ nombre, email, id }) => {
      const nuevaLinea = crearNuevaLinea(nombre, email, id);
      table.appendChild(nuevaLinea);
    });
  })
  .catch((error) => alert("Ocurrió un error"));

client_services.js


const listaClientes = () =>
  fetch("http://localhost:3000/perfil").then((respuesta) => respuesta.json());

const crearCliente = (nombre, email) => {
  return fetch("http://localhost:3000/perfil", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ nombre, email, id: uuid.v4() }),
  });
};

const eliminarCliente = (id) => {
  return fetch(`http://localhost:3000/perfil/${id}`, {
    method: "DELETE",
  });
};

export const clientServices = {
  listaClientes,
  crearCliente,
  eliminarCliente,
};
1 respuesta

¡Hola Kenya!

Gracias por compartir tu duda con nosotros. Parece que estás teniendo problemas para guardar el nombre y el correo electrónico en tu formulario. Revisando tu código, noté que estás utilizando atributos de datos para obtener los valores de los campos de entrada.

En tu archivo "Registro_controller.js", veo que estás obteniendo los valores de los campos de entrada utilizando los selectores [name="nombre"] y [name="email"]. Sin embargo, en tu archivo "Cliente_controller.js", estás utilizando selectores de atributos de datos para crear nuevas filas en tu tabla.

Es posible que el problema radique en que los selectores de atributos de datos en tu archivo "Cliente_controller.js" no coinciden con los atributos de datos que estás utilizando en tu formulario. Asegúrate de que los selectores de atributos de datos en ambos archivos sean consistentes.

Además, verifica que estás llamando correctamente a la función crearCliente en tu archivo "Registro_controller.js". Asegúrate de que estás pasando los valores correctos de nombre y correo electrónico como argumentos.

Si después de hacer estos ajustes aún tienes problemas para guardar los datos, te recomendaría revisar la consola del navegador para ver si hay algún error o mensaje de advertencia que pueda indicar el problema.

Espero que esta información te sea útil y puedas resolver tu problema. Si tienes alguna otra pregunta, no dudes en preguntar. ¡Buena suerte con tu proyecto!

Espero haber ayudado y ¡buenos estudios!