将每个对象中的值映射为一系列新的键值对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"]};

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...