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

334
Vistas
NodeJS: Unhandled Promise Rejection at the end of a method

At the moment, I'm working on a RESTful-API with express and mongoose and I now have a problem.

First, my method:

public create() : Promise<UserDocument> {
    return new Promise((user) => {
        User.exists(this.username).then((exists) => {
            if (exists) {
                throw Errors.mongoose.user_already_exists;
            } else {
                UserModel.create(this.toIUser()).then((result) => {
                    user(result);
                }).catch(() => {
                    throw Errors.mongoose.user_create
                });
            }
        }).catch((error) => {
            throw error;
        })
    });
}

I get a unhandled promise rejections when I execute this method. This happens even if I handle the error when I execute the method like this:

User.fromIUser(user).create().then(() => {
    return response.status(200).send({
        message: "Created",
        user
    });
}).catch((error) => {
    return response.status(500).send({
        message: error
    });
});

Full stacktrace:

(node:23992) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): User already exists
(node:23992) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

How i can avoid this situation?

Thanks for your help, felixoi

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

I found the solution! Just use "resolve, request" for creating a promise.

Here is now my method:

public create() : Promise<any> {
    return new Promise((resolve, reject) => {
        User.exists(this.username).then((exists) => {
            if (exists) {
                reject( Errors.mongoose.user_already_exists);
            } else {
                UserModel.create(this.toIUser()).then((result) => {
                    resolve(result);
                }).catch(() => {
                    reject(Errors.mongoose.user_create);
                });
            }
        }).catch((error) => {
            reject(error);
        })
    })
}

If you call the method now you can use the catch() method and everything works! Call it like this:

User.fromIUser(user).create().then((user) => {
    return response.status(200).send({
        message: "Created",
        user
    });
}).catch((error) => {
    return response.status(500).send({
        message: error
    })
})
about 4 years ago · Santiago Trujillo 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