【问题标题】:JOI validation would not allow Date to be null or empty stringJOI 验证不允许 Date 为 null 或空字符串
【发布时间】: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


    【解决方案1】:
    DATE.invalid(null).messages({
        'any.invalid': 'Null not allowed!',
    }),
    

    【讨论】:

      猜你喜欢
      • 2019-06-01
      • 2021-07-06
      • 2017-07-11
      • 1970-01-01
      • 2019-07-16
      • 2021-05-20
      • 2018-01-12
      • 1970-01-01
      • 2017-05-28
      相关资源
      最近更新 更多