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

206
Visualizações
Cómo enviar la respuesta de la promesa de objeto de clase al controlador en nodeJS

Tengo una pregunta. Estoy usando una aplicación NodeJS dividida en tres partes principales

  1. Objeto de acceso a datos Aquí, creé una función que hace la interacción directa con la base de datos solo en este archivo.

    const { respuesta } = require('expreso'); const db = require('../conexión/db.js');

    /* Exportar */ module.exports = { // Insertar usuario insertUser: (parámetros) => { const sqlStatement = '¿INSERTAR EN EL CONJUNTO de usuarios?'; devolver nueva promesa ((resolver, rechazar) => { db.query(sqlStatement, parámetros, (error, respuesta) => { if (error) { devolver rechazar (error); } devolver resolver (respuesta); }) }) } }

  2. Clase de objeto En esta clase, haré la validación y crearé el método con argumentos, luego implementaré el objeto de acceso a datos insertUser .

     const db = require('../dataAccessObject/dao.js');

    class User { constructor (fname, lname, edad, correo electrónico, contraseña, avatar, género) { this.fname = fname; this.lname = lname; esta.edad = edad; este.email = correo electrónico; this.contraseña = contraseña; este.avatar = avatar; this.género = género; }

     /* Methods */ createUser() { db.insertUser({ 'firstName' : this.fname, 'lastName' : this.lname, 'age' : this.age, 'email' : this.email, 'password' : this.password, 'userAvatar' : this.avatar, 'gender' : this.gender }) .then(() => { console.log(this); return this; }) .catch(error => { if (error.code == 'ER_DUP_ENTRY' && error.errno === 1062) throw new Error('This email is allready in use') else throw error; }) } /* Validations */

    }

    módulo.exportaciones = Usuario;

  3. Controlador

    const nuevoUsuario = nuevo Usuario("fname", "lname", 22, "ema2121il", "contraseña", "avatar", "género"); nuevoUsuario.createUser(); res.send(nuevoUsuario)

Necesito encontrar una manera de pasar los errores de validación o el error duplicado del punto 2 (clase de objeto) al controlador.

Por favor, ¿cómo puedo hacer esto?

over 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Entonces, si su objetivo es devolver datos al controlador expreso (de la clase). La mejor manera es utilizar la biblioteca Promise. Entonces su función createUser debería verse así:

 createUser() { return new Promise ((resolve, reject) => { db.insertUser({ 'firstName' : this.fname, 'lastName' : this.lname, 'age' : this.age, 'email' : this.email, 'password' : this.password, 'userAvatar' : this.avatar, 'gender' : this.gender }) .then(() => { console.log(this); this.runValidations() return resolve(this); }) .catch(error => { if (error.code == 'ER_DUP_ENTRY' && error.errno === 1062) { return reject('This email is already in use') } else { return reject(); } }) }); }

Luego, para utilizarlo desde su controlador, utilice async/await para utilizar el método.

 //The Controller Code app.get('/create-user', async(req, res) => { const user = new User(req.body) // Assuming this is how you're instantiating class try { const newUser = await user.createUser(); console.log("User is Created"); } catch (err) { //Your Error will be available here. console.log("Your Error: ", err) } })

Esto debería darte lo que necesitas :)

over 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
Assistente virtual