LoopBack:稍后设置必填字段

时间:2016-02-24 20:32:37

标签: json node.js dependencies loopbackjs required

我遇到过一个我希望收到电子邮件的情景。如果'键入'价值是在线'。在一般情况下,视图中我有一个字段,可能需要或不依赖于另一个字段值。我将如何解决这个问题呢?

"properties": {
    "type": {
      "type": "string",
      "required": true
    },
    "email": {
      "type": "string"
      "required": //true or false depending on what 'type' is
    }
  }

2 个答案:

答案 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();
    }
  });