gpt4 book ai didi

node.js - 在 Keystone.js 中验证相互依赖的字段

转载 作者:搜寻专家 更新时间:2023-11-01 00:23:24 24 4
gpt4 key购买 nike

我正在尝试在保存项目时进行验证。这是我的简化模型:

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 设置为 truethumbnailImage 没有已设置。当我 console.log() 值时,我分别看到 truefalse,但 Keystone Admin 中没有出现验证错误。

我浏览了 Github 上的 Keystone 示例应用程序,Mongoose 文档有很多示例,但我还没有看到任何处理多个文档路径的示例。

示例位于:mongoose custom validation using 2 fields (目前有 12 票)对我也不起作用。

我做错了什么?我正在使用 Mongoose 3.8.35。

最佳答案

您不应该 ! 否定验证条件的第二部分,因为当它为空时您正在标记验证错误。

所以改成:

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();
}
});

请注意,您还需要将错误字符串包装在 Error 中调用 next 报告验证失败时的对象。

关于node.js - 在 Keystone.js 中验证相互依赖的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33084927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com