Comparing version 1.3.3 to 1.3.4
@@ -31,3 +31,3 @@ 'use strict'; | ||
this.scheme = scheme; | ||
this.flattenedScheme = flatten(scheme); | ||
this.flattenedScheme = Object.assign({},flatten(scheme),scheme); | ||
let flatKeys = Object.keys(this.flattenedScheme); | ||
@@ -57,21 +57,22 @@ this.default_defs = flatKeys.filter(isDefaultDef); | ||
let _document = Object.assign({}, flatten(original_document), original_document); | ||
_document = Object.keys(_document).reduce((result, key) => { | ||
if (_document[key]) { | ||
let indexedKey = key.replace(/^(.+\.){1,}(?:\d+\.)(.+)$/, '$10.$2'); | ||
let validType = this.flattenedScheme[`${ key }.type`] || this.flattenedScheme[key] || this.flattenedScheme[`${ indexedKey }.type`] || this.flattenedScheme[indexedKey]; | ||
if (validType === Date) { | ||
result[key] === new Date(); | ||
} | ||
if (typeof _document[key] === 'string' && (validType === String || validType === ObjectId)) { | ||
result[key] = _document[key].toString(); | ||
} else if (validType === Boolean) { | ||
result[key] = (_document[key]) ? true : false; | ||
} else if (validType === Number) { | ||
result[key] = Number(_document[key]); | ||
} else if (typeof _document[key] === 'object' && (validType === Array || validType === Object)) { | ||
result[key] = _document[key]; | ||
} | ||
} else if (typeof original_document[ key ] === 'object' && typeof this.flattenedScheme[ key ] === 'function' && this.flattenedScheme[ key ] === Object) { //schema type mixed | ||
result[key] = original_document[key]; | ||
_document = Object.keys(_document).reduce((result, key) => { | ||
if (_document[key]) { | ||
let indexedKey = key.replace(/^(.+\.){1,}(?:\d+\.)(.+)$/, '$10.$2'); | ||
let validType = this.flattenedScheme[`${ key }.type`] || this.flattenedScheme[key] || this.flattenedScheme[`${ indexedKey }.type`] || this.flattenedScheme[indexedKey]; | ||
if (validType === Date) { | ||
result[key] === new Date(_document[key]); | ||
} | ||
if (typeof _document[key] === 'string' && (validType === String || validType === ObjectId)) { | ||
result[key] = _document[key].toString(); | ||
} else if (validType === Boolean) { | ||
result[key] = (_document[key]) ? true : false; | ||
} else if (validType === Number) { | ||
result[key] = Number(_document[key]); | ||
} else if (typeof _document[key] === 'object' && (Array.isArray(validType) ||validType === Array || validType === Object || typeof this.scheme[key] ==='object')) { | ||
result[key] = _document[key]; | ||
} | ||
} else if (typeof original_document[ key ] === 'object' && typeof this.flattenedScheme[ key ] === 'function' && this.flattenedScheme[ key ] === Object) { //schema type mixed | ||
result[key] = original_document[key]; | ||
} | ||
return result; | ||
@@ -105,3 +106,3 @@ }, { _id: _document._id }); | ||
_id: ObjectId.createId(), | ||
}, doc); | ||
}, doc); | ||
return this.validateDocument(newDoc); | ||
@@ -108,0 +109,0 @@ } |
{ | ||
"name": "lowkie", | ||
"version": "1.3.3", | ||
"version": "1.3.4", | ||
"license": "MIT", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
6200156