Quiero obtener datos filtrados de MongoDb usando un correo electrónico específico en mi proyecto de reacción. Entonces, creo una solicitud HTTP usando un correo electrónico y luego trato de usar los datos, luego aparece el siguiente error:
GET http://localhost:5000/bloodRequest/amin@gmail.com 404 (No encontrado) No capturado (en promesa) SyntaxError: Token inesperado < en JSON en la posición 0
Mi código de solicitud del lado del cliente:
useEffect(() => { fetch(`http://localhost:5000/bloodRequest/amin@gmail.com`) .then((res) => res.json()) .then((data) => setRequests(data)); }, [requests]);Mi código del lado del servidor:
app.get("/donateBlood/:email", async (req, res) => { const email = req.params.email; const query = { email: email }; const cursor = donateBloodsCollection.find(query); const result = await cursor.toArray(); res.json(result); });Pero cuando cambio la sintaxis de la solicitud HTTP y uso el correo electrónico en medio del enlace HTTP, funciona bien. ejemplo:
Código del lado del cliente:
useEffect(() => { fetch(`http://localhost:5000/amin@gmail.com/bloodRequest`) .then((res) => res.json()) .then((data) => setRequests(data)); }, [requests]);código del lado del servidor:
app.get("/:email/donateBlood", async (req, res) => { const email = req.params.email; const query = { email: email }; const cursor = donateBloodsCollection.find(query); const users = await cursor.toArray(); res.json(users); });En ese caso, funciona correctamente, no sé por qué. ¿Puedes explicarlo, por favor?
La llamada de recuperación está llamando a una URL /bloodRequest/amin@gmail.com , la definición de la API del servidor correspondiente tiene /donateBlood/:email , por lo que se esperaba el error 404 que recibió.
GET http://localhost:5000/bloodRequest/amin@gmail.com 404 (No encontrado) No capturado (en promesa) SyntaxError: Token inesperado < en JSON en la posición 0
Intente cambiar la URL del lado del cliente a /donateBlood/amin@gmail.com o la API del lado del servidor a /bloodRequest/:email .
PD: Básicamente, el código que está intentando es sintácticamente válido. Debe haber fallado debido a errores tipográficos en la URL o no reiniciar el servidor después de un cambio en particular. Puedo ver la misma discrepancia de URL en el código de trabajo que ha publicado, por lo que también debería haber arrojado 404. Publique el código exacto que probó si aún no funciona.