首页 > 解决方案 > 在 Joi (Node.js) 中使用外部函数进行验证

问题描述

我在我的 Node.js Rest API 中使用 Joi 进行验证。我有一个验证特定文档的功能,我想知道是否可以在 Joi 的验证中包含该功能。

例子:

function validateDocument (document) {
    return someCalculation;
}

const schema = Joi.object({
    document: Joi.string().required().valid(validateDocument) // I want something like that
});

const { error, value } = schema.validate(something);

标签: node.jsvalidationjoi

解决方案


是的。您可以使用Joi 扩展调用外部函数进行验证。下面给出了一个示例格式:

const customSchema = Joi.extend(joi => ({
    base: joi.string(),
    name: 'customValidation',
    rules: [
        {
            name: 'validate',
            validate(params, value, state, options) {
                // call custom function and return the result
                // for instance:
                return validateDocument(value);
            },
        },
    ],
}));

推荐阅读