Search code examples
node.jsswaggerjoi

Remove extra body generated from Joe schema in swagger


I have two Joi schema like below:

const updateProfile: {
  body: ObjectSchema;
} = {
  body: Joi.object().keys({
    dob: JoiDate.date()
      .format('MM/DD/YYYY')
      .max(new Date())
      .required()
      .default('01/30/2022'),
    genderId: Joi.number().integer().required(),
    weightLbs: Joi.number().required(),
    heightIn: Joi.number().required(),
    ...
  }),
};

const updateUser: {
  body: ObjectSchema;
} = {
  body: Joi.object().keys({
    firstName: Joi.string(),
    lastName: Joi.string(),
    profile: updateProfile
  }),
};

const updateUserSchema = j2s(updateUser.body).swagger;

The generated Swagger schema contains an extra `body, is there any way to remove it? enter image description here


Solution

  • Removing body from updateProfile fixed my problem:

    const updateProfile: ObjectSchema = Joi.object().keys({
      dob: JoiDate.date()
        .format('MM/DD/YYYY')
        .raw()
        .max(new Date())
        .required()
        .default('01/30/2022'),
      genderId: Joi.number().integer().required(),
      weightLbs: Joi.number().required(),
      heightIn: Joi.number().required(),
      ...
    });