Estoy tratando de registrar un nuevo usuario, cuando estoy enviando la solicitud de publicación, el servidor registra bien al usuario y puedo verlos en mi base de datos, pero no puedo ver el registro de éxito en mi consola (puedo detecta el error y se registra en mi consola).
Código del lado del servidor:
var express = require("express"); const { Error } = require("mongoose"); const passport = require("passport"); var router = express.Router(); const User = require("../models/user"); const catchAsync = require("../utils/catchAsync"); router.post( "/register", catchAsync(async (req, res) => { try { const { email, username, password } = req.body; const user = new User({ email, username }); await User.register(user, password); } catch (e) { throw new Error("Error signing up"); } }) ); module.exports = router;Código del lado del cliente:
const sumbitHandler = async (data) => { const { username, email, password } = data; try { await fetch("http://localhost:9000/users/register", { method: "POST", body: JSON.stringify({ username, email, password, }), headers: { "Content-Type": "application/json", }, }) .then((res) => { if (res && !res.ok) { throw new Error("ERROR"); } console.log("Success"); }) .catch((e) => { console.log(e.message); }); } catch (e) { console.log(e.message); } };Está mezclando el estilo async/await await y el antiguo estilo .then() Promise. Elija uno u otro (recomiendo encarecidamente async/await )
No está transformando la respuesta de fetch en JSON, dejándola en estado Promesa.
¡Tu servidor nunca responde al cliente! Debe agregar res.end() , res.send() , res.json() o algo así.
const sumbitHandler = async (data) => { const { username, email, password } = data; try { const response = await fetch("http://localhost:9000/users/register", {...}); const serverResponse = await response.text(); // or response.json() if your servers sends JSON back console.log("Success! serverResponse is = ", serverResponse ); // "Done!" } catch (e) { console.log(e.message); } };servidor:
... await User.register(user, password); res.send("Done!"); // or res.json({ status : "ok" }); etc.