Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

302
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda