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()的值,我分别看到truefalse ,但在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失败。