Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

287
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!