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

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

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 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!