这就是我在做什么:
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
将用于许多不同的模式,所以我不想重复自己。
我这样做的方式使我的架构失败了。
有什么建议?
分隔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); //?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句