From 590649a4aa4fd17fb2eb5668f113d55abd8cea50 Mon Sep 17 00:00:00 2001 From: Mathieu Arnold Date: Thu, 7 Jan 2021 19:13:21 +0100 Subject: [PATCH] Fix using discriminators. (#510) If an object's reference has already been resolved, or if the object is not a reference, the code will abort with an error like: node_modules/express-openapi-validator/dist/middlewares/parsers/schema.preprocessor.js:366 return ref.split('/components/schemas/')[1]; ^ TypeError: Cannot read property 'split' of undefined at SchemaPreprocessor.getKeyFromRef (node_modules/express-openapi-validator/dist/middlewares/parsers/schema.preprocessor.js:366:20) at node_modules/express-openapi-validator/dist/middlewares/parsers/schema.preprocessor.js:194:34 at Array.flatMap () --- src/middlewares/parsers/schema.preprocessor.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/middlewares/parsers/schema.preprocessor.ts b/src/middlewares/parsers/schema.preprocessor.ts index ba8cd9e3..d2951e8b 100644 --- a/src/middlewares/parsers/schema.preprocessor.ts +++ b/src/middlewares/parsers/schema.preprocessor.ts @@ -264,6 +264,9 @@ export class SchemaPreprocessor { if (xOf && schemaObj?.discriminator?.propertyName && !o.discriminator) { const options = schemaObj[xOf].flatMap((refObject) => { + if (refObject['$ref'] === undefined) { + return []; + } const keys = this.findKeys( schemaObj.discriminator.mapping, (value) => value === refObject['$ref'],