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

251
Visualizações
NodeJS: función que no devuelve res.json

Así que estoy haciendo una API de publicación para el registro/registro. Si un usuario se ha registrado con éxito, se le proporcionará un token de acceso para guardarlo en la interfaz. Todo funciona, el nombre de usuario y la contraseña se guardan en la base de datos junto con el token. Pero el token de acceso no regresa. He usado mongoDB como mi base de datos y usé mongoose. Aquí lo que he hecho hasta ahora:
Código editado

 const UserModel = require("../models/userModel"); var bcrypt = require("bcryptjs"); const jwt = require("jsonwebtoken"); const registration = async (req, res) => { try { const { email, password } = req.body; if (!(email && password)) { res.status(400).send("All input is required"); } const existingEmail = await UserModel.find({ email: email }); if (existingEmail.length === 0) { const userToken = jwt.sign({ email: email }, process.env.SECRET, { expiresIn: "90d", }); let hashedPassword = await bcrypt.hash(password, 8); const user = await UserModel.create({ email, password: hashedPassword, token: userToken, }); await userRegistration.save(function (err, result) { if (err) { console.error(err); } else { console.log(result); } }); res.json(userToken); } else { res.json("email has already been registered"); } } catch (err) { res.json(err); } }; module.exports = registration;

si pruebo la API en Thunder Client en vscode, devuelve {}, un objeto vacío. Por favor dime que he hecho mal?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

const existingEmail = await UserModel.find({ email }); Esta línea suya le proporcionará la matriz de todos los usuarios porque la propiedad de email no tiene nada, será como .find({})

Si está verificando si el email insertado por el usuario ya está en su base de datos o no, le sugiero que lo haga así: const existingEmail = await UserModel.find({ email : email});
Esto devolverá el documento con el valor de la propiedad de email igual al correo electrónico que recibió en req.body es decir, email : xyz@gmail.com

Y en esta línea const userToken = jwt.sign({ email }, process.env.SECRET, {expiresIn: "90d",}); Vuelves a cometer el mismo error. El objeto que pasa en la carga útil tiene la propiedad de email , pero no se asigna ningún valor/correo electrónico a esa propiedad. Es como el email : undefined

Aquí, hazlo así jwt.sign({email : email}, process.env.SECRET, {expiresIn: '90d')})

about 4 years ago · Juan Pablo Isaza Relatório

0

Aparte de lo que se ha mencionado en las otras respuestas, me parece que no le estás dando el token a res.json en ninguna parte.

Su función es devolver el token, pero no creo que vaya a ninguna parte. Debe pasar el token a res.json, no regresar de la función.

Está utilizando await así como .then() , lo que me parece incorrecto. Tienes que usar solo uno de ellos.

Actualización: jwt.sign devuelve una cadena, por lo que userToken contiene una cadena. Le está dando esa cadena a res.json que espera un json. Tienes que pasarle un objeto.

about 4 years ago · Juan Pablo Isaza Relatório

0

Entonces, cometí un simple error en el código. Estaba tratando de guardar el registro de usuario que no estaba definido. Por eso estaba ocurriendo el error. Debería tener más cuidado con esto.

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