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

290
Vistas
¿Qué significa esta línea de código en Express.JS: !usuario && res.status(401).json("¡Credenciales incorrectas!"); y que significa el error que genera?

Estoy siguiendo un tutorial express y encontré esto

 router.post("/login", async (req, res) => { try { const user = await User.findOne({ username: req.body.username }); !user && res.status(401).json("Wrong credentials!"); const hashedPassword = CryptoJS.AES.decrypt(user.password, process.env.PASS_SEC); const originalPassword = hashedPassword.toString(CryptoJS.enc.Utf8); req.body.password !== originalPassword && res.status(401).json("Wrong credentials!"); const { password, ...others } = user._doc; res.status(200).json(others); } catch (err) { res.status(500).json(err); } });

Las lineas que no entiendo son

 !user && res.status(401).json("Wrong credentials!");

Supongo que es una forma abreviada de escribir una declaración if, sin embargo, no estoy tan seguro. ¿También es esto una cosa de javascript? una cosa de NodeJs? o una cosa Express? nunca lo habia visto antes...

Además, si es una instrucción if, ¿qué sucede cuando se ejecuta la línea? ¿El código "regresará" y no continuará, o continuará? Porque recibo un error cuando escribo intencionalmente el nombre de usuario o la contraseña incorrectos:

nodo:interno/errores:464 ErrorCaptureStackTrace(err); ^

Error [ERR_HTTP_HEADERS_SENT]: no se pueden establecer encabezados después de enviarlos al cliente en el nuevo NodeError (node:internal/errors:371:5) en ServerResponse.setHeader (node:_http_outgoing:576:11) en ServerResponse.header (C:\ CENSORED_NodeJS_Tutorial3\node_modules\express\lib\response.js:776:10) en ServerResponse.send (C:\CENSORED_NodeJS_Tutorial3\node_modules\express\lib\response.js:170:12) en ServerResponse.json (C:\CENSORED_NodeJS_Tutorial3\ node_modules\express\lib\response.js:267:15) en C:\CENSORED_NodeJS_Tutorial3\routes\auth.js:36:21 en processTicksAndRejections (node:internal/process/task_queues:96:5) { código: 'ERR_HTTP_HEADERS_SENT' } La aplicación [nodemon] se bloqueó: esperando cambios en el archivo antes de comenzar...

Con mi conocimiento de principiante, supongo que se debe a que el código no se detiene después de presionar esas líneas, pero no tengo idea de cómo solucionarlo, ¡ayuda por favor!

EDITAR: aquí están mis paquetes:

 const router = require("express").Router(); const User = require("../models/User"); const CryptoJS = require("crypto-js");
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Es una línea de código de alguien que pensó que estaba siendo engañoso o lindo, a expensas (grandes) de la legibilidad. Recomiendo encarecidamente no hacer este tipo de cosas.

 req.body.password !== originalPassword && res.status(401).json("Wrong credentials!");

comprueba si req.body.password !== originalPassword es veraz; si lo es, procede a evaluar el lado derecho:

 res.status(401).json("Wrong credentials!");

Una mejor manera de escribir esto sería:

 if (req.body.password !== originalPassword) { res.status(401).json("Wrong credentials!"); }

También sería bueno terminar la ruta allí , en lugar de continuar incluso si las credenciales son incorrectas:

 if (req.body.password !== originalPassword) { res.status(401).json("Wrong credentials!"); return; }

¿El código "regresará" y no continuará, o continuará?

Continuará, lo que, en este caso, no sería deseable. Se debe insertar un return para que no continúe si las credenciales son incorrectas.

about 4 years ago · Juan Pablo Isaza 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