获取Sequelize.js模型的ValidationFailed时遇到此错误:
未处理拒绝SequelizeValidationError:验证错误:登录不是有效的电子邮件
但只有在使用ES7 async
函数时,才会出现此非处理拒绝,请参阅以下代码:
export async function create (req, res) {
try {
res.json({ admin : await Admin.create(req.body) });
} catch (err) {
const message = {
Login : err.errors.map(error => error.message),
};
res.status(400).json({ error : 'ValidationFailed', message : message });
}
}
但是,当我使用ES5承诺格式时,它不会抛出异常。
export function create (req, res) {
Admin.create(req.body)
.then(admin => {
res.json({ admin : admin });
}, err => {
const message = {
Login : err.errors.map(error => error.message),
};
res.status(400).json({ error : 'ValidationFailed', message : message });
});
}
有什么想法吗?
答案 0 :(得分:0)
To wait for a promise to resolve with async functions, you need to use the await
keyword.
export async function create (req, res) {
try {
await res.json({ admin : await Admin.create(req.body) });
// ^^^^ very important to include
} catch (err) {
const message = {
Login : err.errors.map(error => error.message),
};
res.status(400).json({ error : 'ValidationFailed', message : message });
}
}
The error is no longer in scope without the async
keyword, and becomes an unhandled exception.