validation在Keystone.js中相互依赖的字段
我正在尝试在保存项目时进行validation。 这是我的削减模型:
Sample.add({ isPublished: { type: Types.Boolean, default: false }, thumbnailImage: { type: Types.CloudinaryImage, folder: 'samples/thumbnails' }, }); Sample.schema.pre('validate', function(next) { if (this.isPublished && !(_.isEmpty(this.thumbnailImage.image))) { next('Thumbnail Image is required when publishing a sample'); } else { next(); } });
如果Sample
模型的isPublished
设置为true
但是没有设置thumbnailImage
我想引发一个错误。 当我console.log()
的值,我分别看到true
和false
,但在Keystone Admin中没有发生validation错误。
我已经通过Github上的示例应用程序了解了Keystone,Mongoose文档有很多示例,但是我没有看到任何处理多个文档path的示例。
例如: mongoose自定义validation使用2个字段 (目前有12个upvotes)也不适合我。
我究竟做错了什么? 我正在使用Mongoose 3.8.35。
你不应该!
否定validation条件的第二部分,因为您当前正在标记validation错误。
所以把它改为:
Sample.schema.pre('validate', function(next) { if (this.isPublished && _.isEmpty(this.thumbnailImage.image)) { next(Error('Thumbnail Image is required when publishing a sample')); } else { next(); } });
请注意,在next
调用时,您还需要将错误string包装在Error
对象中以报告validation失败。