Estoy creando una API de registro de usuario, donde el nombre y el correo electrónico están configurados para ser únicos. Cuando envío un objeto JSON que tiene la misma dirección de correo electrónico que un usuario existente, da un error como se esperaba. Pero no hay ningún mensaje en ese error , que luego puedo usar para dar un mensaje más útil.
A continuación se muestra el objeto de error que estoy recibiendo.
{ "index": 0, "code": 11000, "keyPattern": { "email": 1 }, "keyValue": { "email": "pranatkarode@rocketmail.com" } }Y este es mi módulo controlador,
const User=require("../models/userModels.js"); exports.signUp=(req,res)=>{ const user=new User(req.body); user.save((err,user)=>{ if(err){ res.send(err) } else{ res.json({ user }) } }) }El objeto de error predeterminado de Mongoose está diseñado para casos de uso no limitados. Por lo tanto, debe mirarlo y, según lo que contenga, agregar mensajes personalizados. Para este caso de uso específico suyo, puede, por ejemplo, hacerlo así:
const User = require("../models/userModels.js"); exports.signUp = async (req, res) => { try { const user = new User(req.body); await user.save(); res.json({ user, }); } catch (err) { if (err.code === 11000 && err?.keyPattern.hasOwnProperty("email")) { err.message = "This email is alrady used."; } else if (err.code === 11000 && err?.keyPattern.hasOwnProperty("name")) { err.message = "This name is alrady taken."; } res.send(err); } }; Estoy usando la sintaxis async / await aquí para tener un código más atractivo, el tuyo también funcionaría.