Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

635
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!