我在strongloop loopback中有一个" post" -model,带有一些属性:
是否可以在strongloop loopback中使用模型验证,但仅当我想发布帖子时,而不是在我保存它时?
答案 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'}
}
);
};