问题描述
我正在尝试将验证错误消息从猫鼬变成Vee验证的可读数据。
在这种情况下,我使用mongoose unique validator来强制执行唯一的电子邮件。我在此电子邮件示例中收到此错误,并得到以下信息:
{
email: {
kind: "unique",path: "email",message: "Email address seems to already exist",type: "unique",value: "email@email.com",}
}
我将此返回为json错误数据,并将其添加到Vee Validate using setErrors
所以在这种情况下,我希望对象变成:
{
email: ['Email address seems to already exist']
}
因此我想将一个对象映射到另一个对象,同时仍然允许存在多个错误字段,以防存在更多前端无法覆盖的服务器端验证。
我对改变验证错误对象本身的解决方案持开放态度,但是我还没有发现对月球验证有用的任何东西。
解决方法
如果要将{email: {message: "email error"},password: {message: "password error"}}
转换为{email: ["email error"],password: ["password error"]}
您可以使用reduce函数(通过Object.keys转换为数组):
const data = {
email: {
message: "Inavlid email"
},username: {
message: "Inavlid username"
},password: {
message: "Inavlid password"
}
};
const transformed = Object.keys(data).reduce((acc,k) => {
return {
[k]: [data[k].message],...acc
};
},{});
console.log(transformed)
// transformed = {email: ["Invalid email"],username: ["Invalid username"],password: ["Invalid password"]};