es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Verifica si el nombre de usuario o el correo electrónico existen en MongoDB Atlas.

Soy nuevo en MERN. Quiero imprimir “USUARIO YA EXISTE” si el correo electrónico o el nombre ya están presentes. Utilicé el método .find pero no funciona. Aquí está el código:

const { response } = require('express')
const express = require('express')
const router = express.Router()
const mongoose = require('mongoose')
const User = mongoose.model("User") //definido en user.js
const bcrypt = require('bcryptjs')


router.post('/signup',(req,res)=>{
    const {name,email,password} = req.body
    if(!email || !password || !name){
       return res.status(422).json({"error":"por favor agregue todos los campos"}) //estado 422 significa que el servidor ha entendido la solicitud pero no puede procesarla
    }

   User.find({email : email, name : name}).then((savedUser)=>{
       if(savedUser){
           return res.status(422).json({error:"usuario ya existe"})
       }

       bcrypt.hash(password,6).then(hashedpassword=>{
        const user = new User({
            email,
            password:hashedpassword,
            name
        })

        user.save().then(user=>{
            res.json({message:"guardado exitosamente"})
        }).catch(err=>{
            console.log(err)
        })  
       }) /

   }).catch(err=>{
       console.log(err)
   })

}) 


module.exports = router;
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para imprimir “USUARIO YA EXISTE” si el correo electrónico o el nombre ya están presentes en MERN, puedes modificar tu código de la siguiente manera:

    router.post('/signup', (req, res) => {
        const { name, email, password } = req.body
        if (!email || !password || !name) {
            return res.status(422).json({ "error": "por favor ingrese todos los campos" })
        }
    
        User.findOne({ $or: [{ name: name }, { email: email }] }).then((savedUser) => {
            if (savedUser) {
                return res.status(422).json({ error: "USUARIO YA EXISTE" })
            }
    
            bcrypt.hash(password, 6).then(hashedpassword => {
                const user = new User({
                    email,
                    password: hashedpassword,
                    name
                })
    
                user.save().then(user => {
                    res.json({ message: "guardado exitosamente" })
                }).catch(err => {
                    console.log(err)
                })
            }).catch(err => {
                console.log(err)
            })
        })
    })
    

    Cambios realizados:
    – Reemplacé User.find con User.findOne. User.findOne devolverá solo un documento, mientras que User.find puede devolver múltiples documentos que cumplen con el criterio.
    – Usé el operador $or para verificar si tanto el nombre como el correo electrónico ya existen en la base de datos.
    – Modifiqué el mensaje de error a “USUARIO YA EXISTE”.

Comments are closed.