首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何扩展Joi模式?

如何扩展Joi模式?
EN

Stack Overflow用户
提问于 2019-07-29 07:11:14
回答 2查看 13K关注 0票数 20

我有一个名为user的joi模式。

代码语言:javascript
复制
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'),
}

我又有一个叫主人的

代码语言:javascript
复制
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中使用用户模式,每当我对用户进行更改时,我也希望它在所有者中反映出来。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-29 07:24:55

您可以使用object.keys([schema]),其中

设置或扩展允许的对象键,其中:

  • schema -可选对象,其中为每个键分配一个joi类型对象。如果schema{},则不允许密钥。如果schemanullundefined,则允许任何密钥。如果schema是一个带有键的对象,则将这些键添加到任何先前定义的键中(但如果以前允许所有键,则缩小选择范围)。默认为“未定义”,这允许任何子键。

示例:

代码语言:javascript
复制
const base = Joi.object().keys({
    a: Joi.number(),
    b: Joi.string()
});
// Validate keys a, b and c.
const extended = base.keys({
    c: Joi.boolean()
});
票数 42
EN

Stack Overflow用户

发布于 2019-07-29 07:16:11

简单地说,您可以在铺展内部user ownerSchema

代码语言:javascript
复制
const ownerSchema = {
    ...user,
    /* owner specific fields goes here */
};
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57248745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档