mongo-schema
Advanced tools
Comparing version 0.1.3 to 0.1.4
@@ -30,3 +30,5 @@ var MongoSchema = function () { | ||
this.check = function (data, schema, update) { | ||
var newData = {}; | ||
var errors = []; | ||
var re; | ||
for (var key in schema) { | ||
@@ -38,9 +40,9 @@ if (!schema.hasOwnProperty(key)) continue; | ||
if (isArray(properties)) { | ||
if (!isArray(value)) { | ||
data[key] = []; | ||
continue; | ||
} else { | ||
newData[key] = []; | ||
if (isArray(value)) { | ||
for (var i in value) { | ||
if (!value.hasOwnProperty(i)) continue; | ||
errors = errors.concat(self.check(value[i], properties[0])); | ||
re = self.check(value[i], properties[0]); | ||
newData[key][i] = re.data; | ||
errors = errors.concat(re.errors); | ||
} | ||
@@ -50,4 +52,5 @@ } | ||
if(!isUndefined(value)){ | ||
var errs = self.check(value, properties); | ||
errors = errors.concat(errs); | ||
re = self.check(value, properties); | ||
newData[key] = re.data; | ||
errors = errors.concat(re.errors); | ||
} | ||
@@ -63,3 +66,3 @@ } else { | ||
if (isNull(value) && update && !properties.required) { | ||
data[key] = undefined; | ||
newData[key] = undefined; | ||
continue; | ||
@@ -84,3 +87,2 @@ } | ||
errors.push(key + " - minLength " + properties.minLength + " not fulfilled on '" + value + "'"); | ||
delete data[key]; | ||
continue; | ||
@@ -96,3 +98,2 @@ } | ||
errors.push(key + " - regex " + properties.regex + " not fulfilled '" + value + "'"); | ||
delete data[key]; | ||
continue; | ||
@@ -102,6 +103,4 @@ } | ||
if (value === undefined) { | ||
delete data[key]; | ||
} else { | ||
data[key] = value; | ||
if (!isUndefined(value)) { | ||
newData[key] = value; | ||
} | ||
@@ -121,3 +120,2 @@ continue; | ||
errors.push(key + " - required not set on '" + value + "'"); | ||
delete data[key]; | ||
continue; | ||
@@ -128,3 +126,2 @@ } | ||
errors.push(key + " - min " + properties.min + " not fulfilled '" + value + "'"); | ||
delete data[key]; | ||
continue; | ||
@@ -134,9 +131,6 @@ } | ||
errors.push(key + " - max " + properties.max + " not fulfilled on '" + value + "'"); | ||
delete data[key]; | ||
continue; | ||
} | ||
if (value === undefined) { | ||
delete data[key]; | ||
} else { | ||
data[key] = value; | ||
if (!isUndefined(value)) { | ||
newData[key] = value; | ||
} | ||
@@ -147,9 +141,7 @@ continue; | ||
errors.push(key + " - required not set '" + value + "'"); | ||
delete data[key]; | ||
continue; | ||
} else if (isUndefined(value)) { | ||
delete data[key]; | ||
continue; | ||
} | ||
data[key] = !!value; | ||
newData[key] = !!value; | ||
continue; | ||
@@ -174,10 +166,7 @@ case 'date': | ||
errors.push(key + " - required not set on '" + value + "'"); | ||
delete data[key]; | ||
continue; | ||
} | ||
if (value === undefined) { | ||
delete data[key]; | ||
} else { | ||
data[key] = value; | ||
if (!isUndefined(value)) { | ||
newData[key] = value; | ||
} | ||
@@ -187,3 +176,2 @@ continue; | ||
if (typeof value !== "string" || (typeof value == "string" && value.length !== 24)) { | ||
delete data[key]; | ||
value = undefined; | ||
@@ -194,10 +182,7 @@ } | ||
errors.push(key + " - required not set '" + value + "'"); | ||
delete data[key]; | ||
continue; | ||
} | ||
if (value === undefined) { | ||
delete data[key]; | ||
} else { | ||
data[key] = value; | ||
if (!isUndefined(value)) { | ||
newData[key] = value; | ||
} | ||
@@ -209,3 +194,3 @@ continue; | ||
} | ||
return errors; | ||
return {errors: errors, data: newData}; | ||
}; | ||
@@ -212,0 +197,0 @@ |
{ | ||
"name": "mongo-schema", | ||
"version": "0.1.3", | ||
"version": "0.1.4", | ||
"main": "lib/mongo-schema.js", | ||
@@ -5,0 +5,0 @@ "description": "Basic schema for mongodb", |
@@ -10,5 +10,7 @@ # mongo-schema [![Build Status](https://secure.travis-ci.org/paul-em/mongo-schema.png?branch=master)](http://travis-ci.org/paul-em/mongo-schema) | ||
var mongoSchema = require('mongo-schema'); | ||
var errors = mongoSchema.check(yourDataToCheck, yourSchema); | ||
if(errors.length === 0){ | ||
var re = mongoSchema.check(yourDataToCheck, yourSchema); | ||
if(re.errors.length === 0){ | ||
// schema did not throw any errors! YEY! | ||
console.log(re.data); // the new data that fits the schema | ||
} else { | ||
@@ -61,16 +63,17 @@ console.log(errors); // returns where there was an error | ||
it("should leave only success and converted numbers and return no errors", function (done) { | ||
var data = _.clone(numberSchemaTest); | ||
var errs = schema.check(data, numberSchema); | ||
assert.strictEqual(errs.length, 0); | ||
assert.strictEqual(data.successTestNumber1, 123); | ||
assert.strictEqual(data.successTestNumber2, 123); | ||
assert.strictEqual(data.convertTestNumber, 456); | ||
assert.strictEqual(data.hasOwnProperty("failTestNumber1"), false); | ||
assert.strictEqual(data.hasOwnProperty("failTestNumber2"), false); | ||
assert.strictEqual(data.hasOwnProperty("failTestNumber3"), false); | ||
assert.strictEqual(data.hasOwnProperty("failTestNumber4"), false); | ||
assert.strictEqual(data.hasOwnProperty("failTestNumber5"), false); | ||
assert.strictEqual(data.hasOwnProperty("failTestNumber6"), false); | ||
assert.strictEqual(data.hasOwnProperty("failTestNumber7"), false); | ||
done(); | ||
var re = schema.check(numberSchemaTest, numberSchema); | ||
var data = re.data; | ||
var errs = re.errors; | ||
assert.strictEqual(errs.length, 0); | ||
assert.strictEqual(data.successTestNumber1, 123); | ||
assert.strictEqual(data.successTestNumber2, 123); | ||
assert.strictEqual(data.convertTestNumber, 456); | ||
assert.strictEqual(data.hasOwnProperty("failTestNumber1"), false); | ||
assert.strictEqual(data.hasOwnProperty("failTestNumber2"), false); | ||
assert.strictEqual(data.hasOwnProperty("failTestNumber3"), false); | ||
assert.strictEqual(data.hasOwnProperty("failTestNumber4"), false); | ||
assert.strictEqual(data.hasOwnProperty("failTestNumber5"), false); | ||
assert.strictEqual(data.hasOwnProperty("failTestNumber6"), false); | ||
assert.strictEqual(data.hasOwnProperty("failTestNumber7"), false); | ||
done(); | ||
}); | ||
@@ -77,0 +80,0 @@ ``` |
@@ -60,4 +60,5 @@ var schema = require("../lib/mongo-schema.js"); | ||
it("should leave only success and converted numbers and return no errors", function (done) { | ||
var data = _.clone(numberSchemaTest); | ||
var errs = schema.check(data, numberSchema); | ||
var re = schema.check(numberSchemaTest, numberSchema); | ||
var data = re.data; | ||
var errs = re.errors; | ||
assert.strictEqual(errs.length, 0); | ||
@@ -78,4 +79,5 @@ assert.strictEqual(data.successTestNumber1, 123); | ||
it("should return errors where and tell me required fields shoule be set", function (done) { | ||
var data = _.clone(numberSchemaTest); | ||
var errs = schema.check(data, numberSchemaReq); | ||
var re = schema.check(numberSchemaTest, numberSchemaReq); | ||
var data = re.data; | ||
var errs = re.errors; | ||
assert.strictEqual(errs.length, 7); | ||
@@ -97,4 +99,5 @@ assert.equal(errs[0].toLowerCase().indexOf("required") !== -1, true); | ||
it("should return min max errors", function (done) { | ||
var data = _.clone(numberSchemaTest); | ||
var errs = schema.check(data, numberSchemaMinMax); | ||
var re = schema.check(numberSchemaTest, numberSchemaMinMax); | ||
var data = re.data; | ||
var errs = re.errors; | ||
assert.strictEqual(errs.length, 2); | ||
@@ -168,4 +171,5 @@ assert.equal(errs[0].toLowerCase().indexOf("min") !== -1, true); | ||
it("should leave only success and converted strings and return no errors", function (done) { | ||
var data = _.clone(stringSchemaTest); | ||
var errs = schema.check(data, stringSchema); | ||
var re = schema.check(stringSchemaTest, stringSchema); | ||
var data = re.data; | ||
var errs = re.errors; | ||
assert.strictEqual(errs.length, 0); | ||
@@ -185,4 +189,5 @@ assert.strictEqual(data.successTestString1, "Hellow"); | ||
it("should return errors where and tell me required fields shoule be set", function (done) { | ||
var data = _.clone(stringSchemaTest); | ||
var errs = schema.check(data, stringSchemaReq); | ||
var re = schema.check(stringSchemaTest, stringSchemaReq); | ||
var data = re.data; | ||
var errs = re.errors; | ||
assert.strictEqual(errs.length, 6); | ||
@@ -203,4 +208,5 @@ assert.equal(errs[0].toLowerCase().indexOf("required") !== -1, true); | ||
it("should return min max errors", function (done) { | ||
var data = _.clone(stringSchemaTest); | ||
var errs = schema.check(data, stringSchemaMinMax); | ||
var re = schema.check(stringSchemaTest, stringSchemaMinMax); | ||
var data = re.data; | ||
var errs = re.errors; | ||
assert.strictEqual(errs.length, 2); | ||
@@ -216,4 +222,5 @@ assert.equal(errs[0].toLowerCase().indexOf("minlength") !== -1, true); | ||
it("should correctly detect regexes", function (done) { | ||
var data = _.clone(stringSchemaTest); | ||
var errs = schema.check(data, stringSchemaRegex); | ||
var re = schema.check(stringSchemaTest, stringSchemaRegex); | ||
var data = re.data; | ||
var errs = re.errors; | ||
assert.strictEqual(errs.length, 1); | ||
@@ -270,4 +277,5 @@ assert.equal(errs[0].toLowerCase().indexOf("regex") !== -1, true); | ||
it("should leave only success and converted booleans and return no errors", function (done) { | ||
var data = _.clone(boolSchemaTest); | ||
var errs = schema.check(data, boolSchema); | ||
var re = schema.check(boolSchemaTest, boolSchema); | ||
var data = re.data; | ||
var errs = re.errors; | ||
assert.strictEqual(errs.length, 0); | ||
@@ -289,4 +297,5 @@ assert.strictEqual(data.successTestBool1, true); | ||
it("should leave only success and converted booleans and return no errors", function (done) { | ||
var data = _.clone(boolSchemaTest); | ||
var errs = schema.check(data, boolSchemaReq); | ||
var re = schema.check(boolSchemaTest, boolSchemaReq); | ||
var data = re.data; | ||
var errs = re.errors; | ||
assert.strictEqual(errs.length, 2); | ||
@@ -344,4 +353,5 @@ assert.strictEqual(errs[0].toLowerCase().indexOf("required") !== -1, true); | ||
it("should leave only success and converted objectId and return no errors", function (done) { | ||
var data = _.clone(objectIdSchemaTest); | ||
var errs = schema.check(data, objectIdSchema); | ||
var re = schema.check(objectIdSchemaTest, objectIdSchema); | ||
var data = re.data; | ||
var errs = re.errors; | ||
assert.strictEqual(errs.length, 0); | ||
@@ -361,4 +371,5 @@ assert.strictEqual(data.successTestObjectId1, "529c3acb044bdcc93700006f"); | ||
it("should leave only success and converted objectIdeans and return no errors", function (done) { | ||
var data = _.clone(objectIdSchemaTest); | ||
var errs = schema.check(data, objectIdSchemaReq); | ||
var re = schema.check(objectIdSchemaTest, objectIdSchemaReq); | ||
var data = re.data; | ||
var errs = re.errors; | ||
assert.strictEqual(errs.length, 7); | ||
@@ -426,4 +437,5 @@ assert.strictEqual(errs[0].toLowerCase().indexOf("required") !== -1, true); | ||
it("should leave only success and converted date and return no errors", function (done) { | ||
var data = _.clone(dateSchemaTest); | ||
var errs = schema.check(data, dateSchema); | ||
var re = schema.check(dateSchemaTest, dateSchema); | ||
var data = re.data; | ||
var errs = re.errors; | ||
assert.strictEqual(errs.length, 0); | ||
@@ -447,4 +459,5 @@ assert.strictEqual(data.successTestDate1, 1390528951); | ||
it("should leave only success and converted date and return no errors", function (done) { | ||
var data = _.clone(dateSchemaTest); | ||
var errs = schema.check(data, dateSchemaReq); | ||
var re = schema.check(dateSchemaTest, dateSchemaReq); | ||
var data = re.data; | ||
var errs = re.errors; | ||
assert.strictEqual(errs.length, 7); | ||
@@ -506,4 +519,5 @@ assert.strictEqual(errs[0].toLowerCase().indexOf("required") !== -1, true); | ||
it("should leave only success and converted date and return no errors", function (done) { | ||
var data = _.clone(collectionSchemaTest); | ||
var errs = schema.check(data, collectionSchema); | ||
var re = schema.check(collectionSchemaTest, collectionSchema); | ||
var data = re.data; | ||
var errs = re.errors; | ||
assert.strictEqual(errs.length, 0); | ||
@@ -520,4 +534,5 @@ assert.strictEqual(data.collection[0].test, 123); | ||
it("should leave only success and converted date and return no errors", function (done) { | ||
var data = _.clone(collectionSchemaTest); | ||
var errs = schema.check(data, collectionSchemaReq); | ||
var re = schema.check(collectionSchemaTest, collectionSchemaReq); | ||
var data = re.data; | ||
var errs = re.errors; | ||
assert.strictEqual(errs.length, 2); | ||
@@ -557,4 +572,5 @@ assert.strictEqual(errs[0].toLowerCase().indexOf("required") !== -1, true); | ||
it("should ignore wrong formats and return no errors", function (done) { | ||
var data = _.clone(updateSchemaTest); | ||
var errs = schema.check(data, updateSchema, true); | ||
var re = schema.check(updateSchemaTest, updateSchema, true); | ||
var data = re.data; | ||
var errs = re.errors; | ||
assert.strictEqual(errs.length, 0); | ||
@@ -569,4 +585,5 @@ assert.strictEqual(data.deleteTest, undefined); | ||
it("should warn me of wrong formats for ", function (done) { | ||
var data = _.clone(updateSchemaTest); | ||
var errs = schema.check(data, updateSchemaReq, true); | ||
var re = schema.check(updateSchemaTest, updateSchemaReq, true); | ||
var data = re.data; | ||
var errs = re.errors; | ||
assert.strictEqual(errs.length, 3); | ||
@@ -573,0 +590,0 @@ assert.strictEqual(errs[0].toLowerCase().indexOf("required") !== -1, true); |
@@ -51,3 +51,3 @@ module.exports = exports = { | ||
"seq": [], | ||
"source": null, | ||
"source": undefined, | ||
"sys": 1, | ||
@@ -54,0 +54,0 @@ "tOffset": -60, |
1051
82
48834