仅当属性是特定值时才能使用环回模型验证

时间:2015-07-10 13:50:38

标签: validation loopbackjs

我在strongloop loopback中有一个" post" -model,带有一些属性:

  • 标题
  • 文本
  • 标记
  • 类别
  • 发表(真或假)

是否可以在strongloop loopback中使用模型验证,但仅当我想发布帖子时,而不是在我保存它时?

1 个答案:

答案 0 :(得分:2)

设置自定义post.saveOrPublish()远程方法,仅在post.isValid()时调用post.publish === true。或者在没有验证的情况下使用内置persistedModel.save(),并在实际点击发布按钮时使用自定义post.publish()远程方法,这会在调用save()之前触发验证代码。< / p>

saveOrPublish示例:(未经过测试,只是一个粗略的想法):

module.exports = function(Post) {

  Post.saveOrPublish = function(post, cb) {

    if(post.publish) {

      post.isValid(function(valid){

        if(valid) {
          Post.upsert(post, function(err, post) {
            if(err) {cb(err, null);}

            cb(null, post);

          });
        } else {
          cb(new Error('Publishing requires a valid post.'), post)
        }

      });

    } else {

      Post.upsert(post, function(err, post) {
        if(err) {cb(err, null);}

        cb(null, post);

      });

    }

  };

  // don't forget the remote method def
  Post.remoteMethod('saveOrPublish',
    {
      accepts: [{ 
        arg: 'post', 
        type: 'object'
      }],
      returns: { 
        arg: 'result', 
        type: 'object'
      },
      http: {verb: 'post'}
    }
  );


};