【发布时间】:2015-07-10 13:50:38
【问题描述】:
我在 strongloop 环回中有一个“post”模型,具有一些属性:
- 标题
- 文字
- 标签
- 类别
- 已发布(对或错)
是否可以在strongloop loopback中使用模型验证,但仅在我想发布帖子时使用,而不是在我保存时?
【问题讨论】:
标签: validation loopbackjs
我在 strongloop 环回中有一个“post”模型,具有一些属性:
是否可以在strongloop loopback中使用模型验证,但仅在我想发布帖子时使用,而不是在我保存时?
【问题讨论】:
标签: validation loopbackjs
设置一个自定义的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'}
}
);
};
【讨论】:
validateUpsert:false 创建一个新 Post 时,验证不会被执行,这就是我想要的,然后我在远程发布方法中手动调用它