我有一个名为user的joi模式。
const user = {
firstName: Joi.string()
.min(2)
.max(50)
.required()
.label('First Name'),
lastName: Joi.string()
.min(3)
.max(50)
.required()
.label('Last Name'),
email: Joi.string()
.allow('')
.email({ minDomainAtoms: 2 })
.max(100)
.label('Email Address'),
}我又有一个叫主人的
const ownerSchema = {
firstName: Joi.string()
.min(2)
.max(50)
.required()
.label('First Name'),
lastName: Joi.string()
.min(3)
.max(50)
.required()
.label('Last Name'),
email: Joi.string()
.allow('')
.email({ minDomainAtoms: 2 })
.max(100)
.label('Email Address'),
number: Joi.string()
.regex(/[0-9]/)
.length(10)
.required()
.label('Phone Number'),
dateOfBirth: Joi.date(),
kycDetails: Joi.array()
.items(schemaKyc)
.required(),
bankDetails: Joi.array()
.items(schemaBank)
.required(),
licenceDetails: Joi.array()
.items(schemaLicence)
.required(),
insuranceDetails: Joi.array()
.items(schemaInsurance)
.required()
};正如您所看到的,这两个字段都有三个共同的字段,我希望能够在owner中使用用户模式,每当我对用户进行更改时,我也希望它在所有者中反映出来。
发布于 2019-07-29 07:24:55
您可以使用object.keys([schema]),其中
设置或扩展允许的对象键,其中:
schema -可选对象,其中为每个键分配一个joi类型对象。如果schema是{},则不允许密钥。如果schema是null或undefined,则允许任何密钥。如果schema是一个带有键的对象,则将这些键添加到任何先前定义的键中(但如果以前允许所有键,则缩小选择范围)。默认为“未定义”,这允许任何子键。示例:
const base = Joi.object().keys({
a: Joi.number(),
b: Joi.string()
});
// Validate keys a, b and c.
const extended = base.keys({
c: Joi.boolean()
});发布于 2019-07-29 07:16:11
简单地说,您可以在铺展内部user ownerSchema
const ownerSchema = {
...user,
/* owner specific fields goes here */
};https://stackoverflow.com/questions/57248745
复制相似问题