Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Alura Geek [DUDA]

Buenas tardes

podrian apoyarme con una duda?

En el reto AluraGeek, ya he echo los documentos .js como se indica en el curso. Sin embargo, al momento de hacer click en el boton de agregar producto, solo envia un objeto con el id y los demas elemento me los pone como undefined.

ya revise el codigo muchas veces pero no logro ver el problema, incluso nombre todas mis variables como las del video de la solución del reto pero sigue regresando solo el id

esto es el archivo productos servicios

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

const crearProducto = (imageUrl, nombre, precio) => {
        return fetch("http://localhost:3000/producto", {
        method:"POST",
        headers:{
            "Conten-type": "application/json"
            
        },
        body: JSON.stringify({
            imageUrl,
            nombre,
            precio,
            id: uuid.v4()

           
        })

        
    });
    
};

console.log(crearProducto)

export const productServices = {
    listaproductos, 
    crearProducto,   
}

este es productos controller

import { productServices } from "../servicios/productos-servicios.js";

const crearNuevoProducto = ( imageUrl, nombre, precio ) =>{
    const linea = document.createElement("div")
    const contenido =     
    `<div class="producto__div" >
    <ul class="lista__productos">
        <li class="item">
            <img class="producto__img"  src=${imageUrl} alt="Imagen de producto" >
            <h4 class="producto__titulo" >${nombre} </h4>
            <p class="price" >${precio} </p>
            <a class="link__prod" href="#" >ver producto</a>
        </li>
    </ul>    
    </div>`;

    
    linea.innerHTML =  contenido;
    return linea
}

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

productServices.listaproductos().then((data) =>{
        console.log(data)
        data.forEach((producto) => {
        const nuevoProducto = crearNuevoProducto(producto.imageUrl, producto.nombre, producto.precio);
        
        product.appendChild(nuevoProducto);
        
    });
}).catch((error)=> console.log(error));

y este es nuevo producto controller

import { productServices } from "../servicios/productos-servicios.js";

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

formulario.addEventListener("submit", (evento ) =>{
    evento.preventDefault();
    const url = document.querySelector("[data-url]").value
    const nombre = document.querySelector("[data-nombre]").value
    const precio = document.querySelector("[data-precio]").value
    console.log(url,"_",nombre,"_",precio);
    productServices.crearProducto(url, nombre, precio)
    .then(respuesta =>{
                window.location.href = "../index.html"
    }).catch(error => {
        console.log(error)
    })
    
});

gracias de antemano

1 respuesta

¡Hola Rodrigo!

Gracias por compartir tu duda con nosotros. Parece que estás teniendo un problema al agregar un producto en el reto AluraGeek. Después de revisar tu código, noté que en el archivo "productos servicios" estás utilizando el encabezado "Conten-type" en lugar de "Content-type" al hacer la solicitud POST. Esto puede estar causando que los demás elementos se envíen como "undefined".

Te sugiero que corrijas el encabezado en el archivo "productos servicios" de la siguiente manera:

headers:{
    "Content-type": "application/json"
}

Además, asegúrate de que los nombres de las propiedades en el objeto que estás enviando en el método crearProducto coincidan con los nombres de las propiedades esperadas en el servidor.

Espero que esto resuelva tu problema. Si tienes alguna otra pregunta, ¡estaré encantado de ayudarte!

¡Buena suerte con tu proyecto en JS en la Web!

Espero haber ayudado y ¡buenos estudios!