我有一个有两个属性的模型。一个名为 userType ,一个名为 lastName 。
基本上我想要做的是:如果userType是professor
,则应该需要lastName。
userType: {
type: 'string',
required: true,
enum: ['professor', 'administrator']
},
lastName: {
type: 'string',
required: function() {
return this.userType === 'professor';
}
},
为什么我不能通过所需的功能?在waterline documentation中,甚至有一个验证contains
的示例。
如果不可能,是否有其他方法可以做到这一点?我不想在控制器上创建自定义验证,我想将所有内容留给模型。甚至可以使用beforeValidate回调。
由于
答案 0 :(得分:3)
根据sails文档http://sailsjs.org/documentation/concepts/models-and-orm/validations
您可以进行自己的验证,例如:
module.exports = {
types: {
isProfessor: function(lastName){
return (this.userType === 'professor' && !lastName)? false: true;
}
},
attributes:{
userType: {
type: 'string',
required: true,
enum: ['professor', 'administrator']
},
lastName: {
type: 'string',
isProfessor: true
}
}
}