微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将每个对象中的值映射为一系列新的键值对Moongoose验证错误至Vee Validate字段验证消息

如何解决将每个对象中的值映射为一系列新的键值对Moongoose验证错误至Vee Validate字段验证消息

我正在尝试将验证错误消息从猫鼬变成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"]};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。