gpt4 book ai didi

javascript - 在 hapi/joi 中。如何将 2 个不同的模式验证合并为一个?

转载 作者:行者123 更新时间:2023-12-05 03:53:18 25 4
gpt4 key购买 nike

这就是我正在做的:

import Joi, { AnySchema } from '@hapi/joi';

export const apiExtraInfo = (): AnySchema => {
return Joi.object({
message: Joi.string(),
apiVersion: Joi.string()
});
};

export const normalizeContentSchema = (): AnySchema => {
return Joi.object({
...apiExtraInfo(),
facets: Joi.object(),
count: Joi.number().required(),
content: Joi.array().items(Joi.object()).required()
});
};

架构 apiExtraInfo 将在许多不同的架构中使用,因此我不想重复。

我这样做的方式使我的架构失败。

https://hapi.dev/module/joi/

有什么建议吗?

最佳答案

api_schema 和构成 api_schema 的对象(下面定义为 api_schema_definition)分开。

这是因为 Joi 模式只接受普通对象。

(使用 quokka.js 测试)

const Joi = require("@hapi/joi");

const test_api_ok = {
message: "hello",
apiVersion: "any",
};

const test_normalize = {
message: "hello",
apiVersion: "any",
facets: {},
count: 1,
content: [{}],
};

const api_schema_definition = () => ({
message: Joi.string(),
apiVersion: Joi.string(),
});

const api_schema = Joi.object({
...api_schema_definition(),
});

const joined_schema = Joi.object({
...api_schema_definition(),
facets: Joi.object(),
count: Joi.number().required(),
content: Joi.array().items(Joi.object()).required(),
});

joined_schema.validate(test_normalize); //?

关于javascript - 在 hapi/joi 中。如何将 2 个不同的模式验证合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61762319/

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