gpt4 book ai didi

javascript - Joi:如何验证数组中的所有项目都具有相同的类型

转载 作者:行者123 更新时间:2023-12-03 06:59:31 25 4
gpt4 key购买 nike

我的数组可以有多种类型:

[Joi.string(), Joi.number(), Joi.boolean(), Joi.array(), Joi.object()]
但我想同时只允许其中一个。
我尝试了以下方法:
attributes: Joi.object().pattern(/\w+/, Joi.alternatives().try([Joi.array().items(Joi.string()), Joi.array().items(Joi.number()), Joi.array().items(Joi.boolean()), Joi.array().items(Joi.array()), Joi.array().items(Joi.object())]))
我正在使用 Joi 11.4.0。
我知道这是一个旧版本,但是有什么方法可以执行这样的验证吗?它在另一个版本中可行吗?

最佳答案

这适用于版本 11.4.0也是目前最新的版本17.2.1

const Joi = require('joi');

const schema = Joi.object({
attributes: Joi.alternatives().try(
Joi.array().items(Joi.string()),
Joi.array().items(Joi.number()),
Joi.array().items(Joi.boolean()),
Joi.array().items(Joi.array()),
Joi.array().items(Joi.object())
)
.required(),
})
.required();

const onlyStrings = {
attributes: ['one', 'two', 'three']
};
console.log(schema.validate(onlyStrings).error);

const onlyNumbers = {
attributes: [1, 2, 3],
};
console.log(schema.validate(onlyNumbers).error);

const onlyBooleans = {
attributes: [false, true, false],
};
console.log(schema.validate(onlyBooleans).error);


const onlyArrays = {
attributes: [[], [], []],
};
console.log(schema.validate(onlyArrays).error);

const onlyObjects = {
attributes: [{}, {}, {}]
};
console.log(schema.validate(onlyObjects).error);

// fails
const stringAndNumbers = {
attributes: ['one', 2, 'three']
};
console.log(schema.validate(stringAndNumbers).error);

关于javascript - Joi:如何验证数组中的所有项目都具有相同的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63226480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com