Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

625
Vistas
No se pueden obtener datos. Error: no se pueden establecer encabezados después de enviarlos al cliente

Recibo este error cuando intento recuperar publicaciones de un usuario específico. El código para obtener los datos es correcto. No estoy seguro de dónde viene el error.

Del lado del servidor ingrese la descripción de la imagen aquí Lado del cliente

ingrese la descripción de la imagen aquí

A continuación se muestra el código para la publicación individual.

 const UserPosts = () => { const [user, setUser] = useState() useEffect(() => { const id = localStorage.getItem("userId"); const sendRequest = async () => { const res = await axios.get(`/post/user/${id}`) .catch(error => console.log(error)); const data = await res.data; console.log(data) return data; } sendRequest() .then((data) => { setUser(data.user) console.log(data) }) }, []) return ( <div> {user && user.posts.map((post, index) => ( <Post id={post._id} isUser={true} key={index} username={user.username} caption={post.caption} selectedFile={post.selectedFile} createAt={post.createAt} /> )).reverse()} </div> ) } export default UserPosts;

Este es el controlador de correos para esa ruta.

 export const getUserById = async (req, res) => { const userId = req.params.id; let userPosts; try { userPosts = await User.findById(userId).populate("posts"); } catch (error) { console.log(error) } if (!userPosts) { res.status(404).json({ message: "No Post Found" }) } res.status(200).json({ user: userPosts }) }
about 4 years ago · Santiago Gelvez
3 Respuestas
Responde la pregunta

0

useEffect(() => { const id = localStorage.getItem("userId"); const sendRequest = async () => { const {data} = await axios.get(`http://localhost:backend-port/post/user/${id}`) setUser(data.user) } sendRequest() }, [])

Por favor, inténtalo

about 4 years ago · Santiago Gelvez Denunciar

0

Su problema, como señala @Gavin, es que responde con un estado de 404, pero luego cae, fuera del bloque if , a otra llamada res.status . No puede enviar el estado más de una vez de esa manera, y debe reestructurar su lógica para evitar llamar a res.status dos veces. Dos soluciones fáciles y viables:

Opción 1: agregue un return en el bloque de manejo de errores para evitar caer en el caso sin error.

 if (!userPosts) { res.status(404).json({ message: "No Post Found" }) return; } res.status(200).json({ user: userPosts })

Opción 2: use un bloque else para separar el caso de error del caso de no error de manera simétrica.

 if (!userPosts) { res.status(404).json({ message: "No Post Found" }) } else { res.status(200).json({ user: userPosts }) }
about 4 years ago · Santiago Gelvez Denunciar

0

Me di cuenta de cuál era el problema.

Si bien mi principal problema fue que el componente no mostraba los datos en la página debido a que obtuvo la ruta de inicio de sesión incorrecta en el lado del cliente. Cuando el usuario inicia sesión, almacené la identificación del usuario en el almacenamiento local y recuperé la identificación del usuario del almacenamiento local para obtener la identificación del usuario al mostrar la publicación del usuario.

El problema en el lado del servidor se debió a que no se devolvió la declaración if y condujo a la devolución de 2 respuestas.

about 4 years ago · Santiago Gelvez Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda