在我的情况下,错误处理的方式是什么?

时间:2018-12-20 12:58:44

标签: node.js typescript

我正在尝试让服务器端部分处理从“控制器”类到“路由”类的错误,以便可以在邮递员中显示它们。

我认为我应该与Promises合作,但我不了解他们的工作方式。 这是我的控制器类中的代码,

async validatingWithDB(email: string, password: string) {
    await this.client.connect(async () => {
        try {
            let saltKey = await this.client.query(
                "SELECT salt FROM userinfo WHERE email=$1", [email]);

            if (saltKey.rowCount == 1) {
                let hashedLoginPassword = this.saltingValidation(password, saltKey.rows[0].salt).hash;

                let result = await this.client.query(
                    'SELECT id FROM userinfo WHERE email=$1 AND password=$2', [email, hashedLoginPassword]);

                if (result.rowCount > 1 || result.rowCount < 1) {
                   throw Error("Wrong or non existing user !");
                } else {
                    console.log("Succes Login !");
                }
            } else {
                throw Error("Wrong or non existing user !");
            }
        } catch (err) {
            console.error(err.message);
        }
    });
  };
}

//this is in Routes Class        
app.route('/login')
        .post(async (req: Request, res: Response) => {
            try {
                if (req.body.email !== 0) {
                    if (req.body.password !== 0) {
                        await 
this.authenticationService.validatingWithDB(req.body.email, 
req.body.password)
                        res.status(200).send(new Result(
                            true, { Message: 'Login Successfully !' 
}
                        ));
                    } else {
                        throw new Error("Password too short");
                    }
                } else {
                    throw new Error("Email is too short");
                }
            } catch {
                res.status(400).send(new Result(
                    false, { Message: 'Bad request, Please try again' }, ErrorCodes.BadRequest
                ));
            }
        })

0 个答案:

没有答案