向用户发送用户友好消息
在我们的api代码中,我们需要记录错误消息,以便可以在cloudwatch上跟踪该错误消息,但希望将更加用户友好的消息发送给用户。
dao方法可以发送除代码中此处提到的错误消息以外的任何类型的错误消息。因此,我们在api方法中尝试try catch块,并在捕获之后将其记录(用于cloudwatch),然后将消息发送给用户。我们希望将更加用户友好的消息发送给客户端。
这里由dao发送的错误msg中的emaiId是不固定的,并且可能因用户邮件ID而异。
有没有办法找出错误的类型,然后使用我们的枚举来检索用户友好的消息。
createUser(req, res){
let emailId = req.body.email;
try{
let { user } = await this.userDao.createUser(emailId);
} catch (err) {
console.log("Error while creating user", err);
return res.error(err.message); // Want to send more user friendly here like "User already exist. Please try again."
}
}
USERDAO file
createUser(emailId: string){
let existingUser = await this.findByEmail(emailId);
if (!existingUser) {
throw new Error(
`User with email address ${emailId} already exists`
);
} else
...
}
回答如下:在createUser函数的catch块中的err.message对象上添加条件,无论从createUser函数(USERDAO文件)得到的错误是什么>>
createUser(req, res){
let emailId = req.body.email;
try {
let { user } = await this.userDao.createUser(emailId);
} catch (err) {
console.log("Error while creating user", err);
if (err.message === `User with email address ${emailId} already exists`) {
return res.error('User already exist. Please try again.')
} else {
return res.error(err.message);
}
}
}
USERDAO file
createUser(emailId: string){
let existingUser = await this.findByEmail(emailId);
if (!existingUser) {
throw new Error(`User with email address ${emailId} already exists`);
} else
...
}