Monday, 3 April 2017

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



via felixoi

No comments:

Post a Comment