Validation 在环回中更改用户默认验证

Validation 在环回中更改用户默认验证,validation,loopbackjs,Validation,Loopbackjs,我正在开发一个环回应用程序,将基本用户模型扩展到用户代码模型,其中每个用户都由电子邮件加上代码字段标识 因此,用户可以使用不同的代码两次注册同一封电子邮件 我在第691行的节点模块/loopback/common/models/user.js中看到: UserModel.validatesUniquenessOf('email', {message: 'Email already exists'}); 我想删除此限制/验证,但当然不更改环回代码 我怎么做? 也许在启动脚本中,我可以循环执行所有

我正在开发一个环回应用程序,将基本
用户
模型扩展到
用户代码
模型,其中每个用户都由
电子邮件
加上
代码
字段标识

因此,用户可以使用不同的代码两次注册同一封电子邮件

我在第691行的
节点模块/loopback/common/models/user.js中看到:

UserModel.validatesUniquenessOf('email', {message: 'Email already exists'});
我想删除此限制/验证,但当然不更改环回代码

我怎么做? 也许在启动脚本中,我可以循环执行所有验证并删除此验证?

找到了答案

在这种情况下,您需要删除用户模型设置的默认验证

common/models/userCode.js

您还可以使用
required:true | false
属性使任何默认定义的属性成为required或not

common/models/userCode.json

以下代码将删除所有电子邮件验证:

module.exports = function(UserCode){
   //Add this line and it will start receiving multiple email.
   delete UserCode.validations.email;
}
相反,要有选择性地做如下事情:

   module.exports = function(UserCode){
      // remove ONLY email uniqueness validation 
      UserCode.validations.email = UserCode.validations.email.reduce((all, one) => {
        if (one.validation !== 'uniqueness') {
          all.push(one);
        }
        return all;
      }, []);
    }

@现在检查答案。我编辑过。是的,我也找到了类似的解决方案。。不仅删除所有验证,而且删除唯一性。。使用
切片
。。还有更好的办法吗?@nkint现在。我想那是唯一的办法。关于这个问题一直在进行讨论。
module.exports = function(UserCode){
   //Add this line and it will start receiving multiple email.
   delete UserCode.validations.email;
}
   module.exports = function(UserCode){
      // remove ONLY email uniqueness validation 
      UserCode.validations.email = UserCode.validations.email.reduce((all, one) => {
        if (one.validation !== 'uniqueness') {
          all.push(one);
        }
        return all;
      }, []);
    }