From 4bef8395b0f66c36899560f94a8183b90b29e2df Mon Sep 17 00:00:00 2001 From: "daniel.joppi" Date: Tue, 4 Oct 2016 11:28:03 -0300 Subject: [PATCH 1/3] fix non 'object' references --- lib/index.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/lib/index.js b/lib/index.js index 01258f0..8d4ba5f 100644 --- a/lib/index.js +++ b/lib/index.js @@ -184,9 +184,17 @@ var processRef = function (property, objectName, props, key, required) { var refRegExp = /^#\/definitions\/(\w*)$/; var refString = property['$ref'] ? property['$ref'] : property['items']['$ref']; var propType = refString.match(refRegExp)[1]; + // NOT circular reference if (propType !== objectName) { - // NOT circular reference - props[key] = [getSchema(propType, definitions[propType]['properties'] ? definitions[propType]['properties'] : definitions[propType])]; + var object = definitions[propType]; + if (~['array', 'object'].indexOf(object.type)) { + var schema = getSchema(propType, definitions[propType]['properties'] ? definitions[propType]['properties'] : definitions[propType]); + props[key] = object.type === 'array' ? [schema] : schema; + } else { + var clone = _.extend({}, object); + delete clone[getMongooseProperty()]; + props[key] = getSchemaProperty(clone, key)[key]; + } } else { // circular reference if (propType) { @@ -200,8 +208,6 @@ var processRef = function (property, objectName, props, key, required) { }; var getSchema = function (objectName, fullObject) { - - var props = {}; var required = fullObject.required || []; var object = fullObject['properties'] ? fullObject['properties'] : fullObject; @@ -298,7 +304,7 @@ module.exports.compile = function (spec, _extraDefinitions) { var schemas = {}; _.forEach(definitions, function (definition, key) { - var object = null; + var object; var options = xSwaggerMongoose.schemaOptions; var excludedSchema = xSwaggerMongoose.excludeSchema; var documentIndex = xSwaggerMongoose.documentIndex[key]; From cf31f669cbc88b4009af1dcae2a2a5ed044ada2c Mon Sep 17 00:00:00 2001 From: "daniel.joppi" Date: Tue, 4 Oct 2016 11:41:12 -0300 Subject: [PATCH 2/3] validate array type --- lib/index.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/index.js b/lib/index.js index 8d4ba5f..5049584 100644 --- a/lib/index.js +++ b/lib/index.js @@ -188,12 +188,13 @@ var processRef = function (property, objectName, props, key, required) { if (propType !== objectName) { var object = definitions[propType]; if (~['array', 'object'].indexOf(object.type)) { - var schema = getSchema(propType, definitions[propType]['properties'] ? definitions[propType]['properties'] : definitions[propType]); - props[key] = object.type === 'array' ? [schema] : schema; + var schema = getSchema(propType, object['properties'] ? object['properties'] : object); + props[key] = property['items'] || object.type === 'array' ? [schema] : schema; } else { var clone = _.extend({}, object); delete clone[getMongooseProperty()]; - props[key] = getSchemaProperty(clone, key)[key]; + var schemaProp = getSchemaProperty(clone, key)[key]; + props[key] = property['items'] ? [schemaProp] : schemaProp; } } else { // circular reference @@ -334,6 +335,7 @@ module.exports.compile = function (spec, _extraDefinitions) { var models = {}; _.forEach(schemas, function (schema, key) { + console.log('>>>', key, schema.obj); models[key] = mongoose.model(key, schema); }); From 29d5bd731b008fe449eaa0c59e623d1de2ecabef Mon Sep 17 00:00:00 2001 From: "daniel.joppi" Date: Tue, 4 Oct 2016 18:51:37 -0300 Subject: [PATCH 3/3] remove console.log --- lib/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/index.js b/lib/index.js index 5049584..39877bb 100644 --- a/lib/index.js +++ b/lib/index.js @@ -335,7 +335,6 @@ module.exports.compile = function (spec, _extraDefinitions) { var models = {}; _.forEach(schemas, function (schema, key) { - console.log('>>>', key, schema.obj); models[key] = mongoose.model(key, schema); });