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

148
Vistas
express-validator con mangosta

Estoy desarrollando mi propio sitio web usando (angularjs, bootstrap) para el front-end (node, express) para el back-end (mongodb, mongoose layer) para la base de datos.
Tengo un formulario de registro y en ese formulario quiero verificar que el correo electrónico no se haya tomado cuando alguien intente crear una nueva cuenta, por lo que quiero que mi API de registro verifique si el correo electrónico enviado no se ha tomado antes.

Ahora estoy usando este validador https://github.com/ctavan/express-validator#validation-by-schema y este es mi código:

 var vadlidateRegUser= function (req,res,next) { req.checkQuery('UserName','Username must contain letters and numbers only').isAlphanumeric().notEmpty(); req.checkQuery('Email','Email should have a valid syntax eg: example@example.com') .isEmail().notEmpty(); var error = req.validationErrors(); if(!error){ next(); }else { res.json({success:false, message:error}); } }

Ahora me gustaría verificar con el validador si el correo electrónico es único, algo como esto:

 req.checkQuery('Email','Email should have a valid syntax eg: example@example.com') .isEmail().isUnique(Model Name);

alguna sugerencia ?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

express-validator puede verificar y desinfectar sus datos de entrada, pero no puede saber si un correo electrónico ya está en su base de datos.

Creo que la mejor manera es hacerlo unique en su esquema de mongoose y manejar el error cuando ya existe un correo electrónico:

 let User = new Schema({ firstname: String, lastname: String, email: { type: String, required: true, unique: true, // ensure unique email validate: [ isEmail, "Email should have a valid syntax eg: example@example.com" ] }, // ... })
over 4 years ago · Santiago Trujillo Denunciar

0

Sé que esta pregunta es antigua pero la encontré hoy con la esperanza de ayudarme con el mismo problema, pero logré encontrar la manera de hacerlo, así que quería compartirla para que la siguiente la encuentre.

Ahora express-validator tiene la capacidad de verificar con Promises.

Lo que hice fue crear un archivo separado con mi esquema de mangosta y solicitarlo en mi enrutador, luego durante mis comprobaciones hice esto:

 check('email').custom((value) => { var query = User.find({ email: value}) return query.exec().then(user => { if (user.length > 0) { return Promise.reject('E-mail already in use'); } }); }),

y todo funciona a las mil maravillas!

Espero que esto ayude a alguien más. Si necesita más detalles, solo responda para que pueda agregar más detalles.

over 4 years ago · Santiago Trujillo 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