我遇到过一个我希望收到电子邮件的情景。如果'键入'价值是在线'。在一般情况下,视图中我有一个字段,可能需要或不依赖于另一个字段值。我将如何解决这个问题呢?
"properties": {
"type": {
"type": "string",
"required": true
},
"email": {
"type": "string"
"required": //true or false depending on what 'type' is
}
}
答案 0 :(得分:1)
将所有可能不需要的字段声明为非必需字段,并使用operation hook before save
来验证自定义逻辑功能中的字段。
在model.js文件中,使用您需要的逻辑实现钩子。例如,如果type为'A'并且需要电子邮件但请求中没有提供,则生成错误并致电next(err)
。这样,请求将被拒绝。
MyModel.observe('before create', function(ctx, next) {
if(ctx.instance){
data = ctx.instance
} else {
data = ctx.data
{
if(data.type =='A' && !data.email){
next(new Error('No email provided !')
} else {
next();
}
});
答案 1 :(得分:0)
清理@ overdriver的代码,使其更具可实施性
MyModel.observe('before save', (ctx, next) => {
let obj = ctx.instance;
if(obj.type == 'A' && obj.email == null){
next(new Error('No email provided !'));
}
else {
next();
}
});