如何在Joi验证中使用相同的密钥验证不同的数据类型

时间:2019-08-07 06:01:56

标签: node.js joi

这是我的方案。我想验证传入joi validation的相同密钥但不同数据类型。如何做到这一点:

joi验证

    static validateSearchedProduct(request_query) {
        const joiSearchedProductSchema = Joi.object({
            product_category: Joi.objectId()
        })
        return Joi.validate(request_query, joiSearchedProductSchema);
    }

功能

validateSearchedProduct({product_category:"5d44258bcb9b611da1f658c8"})
validateSearchedProduct({product_category:["5d44258bcb9b611da1f658c8"]})

1 个答案:

答案 0 :(得分:0)

因此,您希望product_categorystring中的arraystrings。然后,您可以使用here并执行类似的操作:

static validateSearchedProduct(request_query) {
        const joiSearchedProductSchema = Joi.object({
            product_category: Joi.alternatives().try(
              Joi.string(),
              Joi.array().items(Joi.string())
            )
        })
        return Joi.validate(request_query, joiSearchedProductSchema);
    }

Joi.string()可以替换为所需的任何内容(例如Joi.objectId)。