我可以仅在 属性 为特定值时使用环回模型验证吗
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'}
}
);
};
我在 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'}
}
);
};