我可以仅在 属性 为特定值时使用环回模型验证吗

Can I use Loopback Model Validations only when a property is certain value

我在 strongloop 环回中有一个 "post" 模型,它具有一些属性:

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

设置自定义 post.saveOrPublish() 远程方法,仅在 post.publish === true 时调用 post.isValid()。或者使用内置 persistedModel.save() 进行所有未经验证的操作,并在您实际单击发布按钮时使用自定义 post.publish() 远程方法,这将在调用 save() 之前触发您的验证代码。

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'}
    }
  );


};