下面是一个自定义的test
的例子,我使用它来验证上传的文件是否是一个图片。问题是,即使我没有向这个模式添加.required()
,它也是必需的,因为一个未定义的值不会通过我的测试:
export const imageFileSchema = .mixed<Express.Multer.File>().test(
"valid-image",
"The uploaded file is not a valid image",
async file => {
if (!file) return false;
const result = await validateBufferMIMEType(file.buffer, {
allowMimeTypes: ["image/jpeg", "image/png"],
});
return result.ok;
}
)
我的想法是,如果file
为null,则返回true
而不是false
:
if (!file) return true;
但是如果值是未定义的,通过图像测试感觉就不对了。
这是正确的做法吗?
1条答案
按热度按时间l0oc07j21#
我不熟悉你在问题中使用的类型,因此我在这个答案中使用
FileList
作为输入type=“file”。当
FileList
示例的长度〉0时,执行测试,否则返回true
,如下所示。