首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >_validations突然共享了Jugglingdb模式

_validations突然共享了Jugglingdb模式
EN

Stack Overflow用户
提问于 2013-08-05 19:28:02
回答 1查看 147关注 0票数 0

我想重用一些验证规则(登录/注册)。但是,如果我将验证分配给用户模式,杂耍数据库也会将这些验证添加到BaseUser中(这不是我想要的,我也不知道这是如何实现的)

代码语言:javascript
复制
// Provide user properties to re-use for login validation
var common_properties = {
  email    : String,
  password : String
};

var common_validations = [ 
  ['email',    {validation: 'presence'}],
  ['email',    {validation: 'format', with: /@.*?\./}],
  ['password', {validation: 'presence'}],
  ['password', {validation: 'length', min: 6}] 
];

var BaseUser = schema.define('BaseUser', common_properties);
    BaseUser._validations = common_validations;


var User = schema.define('User', _.extend(common_properties, {
  name     : String,
  salt     : String,
  created  : { type: Date, default: Date.now }
}));

User._validations = common_validations;

User.validatesPresenceOf('name');
User.validatesUniquenessOf('email');


console.log(BaseUser._validations)

// [ [ 'email', { validation: 'presence' } ],
//  [ 'email', { validation: 'format', with: /@.*?\./ } ],
//  [ 'password', { validation: 'presence' } ],
//  [ 'password', { validation: 'length', min: 6 } ],
//  [ 'name', { validation: 'presence' }, undefined ],            Should not be here??
//  [ 'email', { validation: 'uniqueness' }, { async: true } ] ]  Should not be here??

有人知道javascript / jugglingdb是如何做到这一点的吗?我只想将common_validations赋值给BaseUser,没有别的。

EN

回答 1

Stack Overflow用户

发布于 2013-09-05 04:14:51

我没有跟踪它,但我猜问题是您为BaseUser和User构造函数分配了相同的验证数组(common_validations)。由于BaseUser和User都有一个指向同一数组实例_validations属性,因此添加一个新的验证会向该数组添加一个新条目,因此它在这两种类型上都会出现。

尝试将_validations分配给common_validations数组的副本,而不是指向共享实例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18057030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档