Hola, quiero verificar si el usuario existe antes del registro, pero por alguna razón no funciona. algo malo está sucediendo después de otra cosa. ¿Puede alguien decirme por qué? gracias.
//jj. using express const app = express() import express, { json } from 'express' //jj. main array const allUsers = [{name:"jane"},{name:"jacek"},{name:"morty"}]; //jj. main listener app.post('/adduser', (req, res) => { let tocomapre = req.body.name for (let user of allUsers ){ if(user.name == tocomapre){ console.log(user.name, req.body.name, tocomapre); console.log('user already exist'); res.status(400).send("User alredy exist") break } else{ try{ const user = {name:req.body.name} console.log(req.body.name); allUsers.push(user) return res.status(200).send('user on board') }catch{ res.status(500).send(" it's ain't good sthww") } } } }); ====================================================== //jj. request POST http://localhost:3000/adduser Content-Type: application/json { "name":"morty" }Tiene el else dentro del ciclo for para que un nuevo usuario se envíe a todos los allUsers si simplemente difiere del primer usuario existente. Esto está mal.
Reemplace el break con un return y coloque el bloque try-catch después del bucle:
let tocomapre = req.body.name for (let user of allUsers){ if(user.name == tocomapre){ ... return } } try{ ... }catch{ ... } Si el nuevo usuario se encuentra en algún momento durante el bucle for , emite un error 400 y return . De lo contrario, agrega el usuario.