【发布时间】:2022-11-12 17:44:26
【问题描述】:
我有一个用例,我需要将两个日期从前端发送到路由,并且应该能够允许用户在需要时根本不输入任何日期。
但是,当我尝试在不对日期字段进行任何更改的情况下发送请求时,出现架构验证错误。
我在最顶部进行条件检查,如果从前端传递了未定义的内容,我明确将其设置为空,并且 DATE 的验证允许空值。
但是,我仍然收到验证错误。谁能帮我解决这个问题?
export const updateProductsValidation = (req, res, next) => {
try {
req.body.saleEndDate === undefined ? null : req.body.saleEndDate;
req.body.saleStartDate === undefined ? null : req.body.saleStartDate;
const schema = Joi.object({
_id: SHORTSTR.required(),
catId: SHORTSTR.required(),
status: SHORTSTR.required(),
name: SHORTSTR.required(),
description: LONGSTR.required(),
quantity: QUANTITY.required(),
price: PRICE.required(),
salePrice: PRICE,
saleEndDate: DATE.allow(null).allow(''), //DATE = Joi.date();
saleStartDate: DATE.allow(null).allow(''),
images: LONGSTR.allow(null).allow(''),
thumbnailImage: SHORTSTR,
imageToDelete: LONGSTR.allow(null).allow(''),
});
validator(schema, req, res, next);
} catch (error) {
next(error);
}};
验证器功能:
export const validator = (schema, req, res, next) => {
const { value, error } = schema.validate(req.body);
if (error) {
error.status = 200;
return next(error);
}
next();
};
DATE 是一个分配有 Joi.date() 的变量。
【问题讨论】:
标签: node.js validation joi