我想重新使用一些验证规则(登录/注册)。但是,如果我为User模式分配验证,jugglingdb也会将这些验证添加到BaseUser(这不是我想要的,我不知道这是怎么发生的)
// 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,没有别的。
答案 0 :(得分:0)
我没有追踪它,但我猜测问题是你要为BaseUser和User构造函数分配相同的验证数组(common_validations)。由于BaseUser和User都有_validations属性指向同一个数组实例,因此添加新验证会向该数组添加一个新条目,因此它会显示在这两个类型上。
尝试将_validations分配给common_validations数组的副本,而不是指向共享实例。