diff --git a/backend/app/people/inquisitor-validator.js b/backend/app/people/inquisitor-validator.js new file mode 100644 index 0000000000000000000000000000000000000000..d6fcf64399f193e398e7c018af582904af50c72b --- /dev/null +++ b/backend/app/people/inquisitor-validator.js @@ -0,0 +1,26 @@ +var erroneous_name = new Error('Erroneous name') +var erroneous_pet = new Error('Erroneous pet name') + +var areBadPetsHere = function (pets) { + if(pets.length == 0){ + return false + } + var m = pets.map(function (pet) { + return pet == '' + }) + return m.reduce(function (i,j) { + return i || j + }) +} + +var inquisitor = function (next) { + if(this.name == ''){ + next(erroneous_name) + } + if(areBadPetsHere(this.pets)){ + next(erroneous_pet) + } + next() +} + +module.exports = inquisitor diff --git a/backend/app/people/people.js b/backend/app/people/people.js index 509d4a8e7cffd5a9a5d8e1d4faba813ae9c1941f..1aefc2c12fdf10c9580520dc77236ae90ef8fcb8 100644 --- a/backend/app/people/people.js +++ b/backend/app/people/people.js @@ -1,10 +1,23 @@ var db = require('../db/db.js') var mongoose = require('mongoose') +var inquisitor = require('./inquisitor-validator.js') var people = {} db.once('open',function () { - people.model = mongoose.model('People',{ name: String, pets: Array }) + people.schema = new mongoose.Schema( + { + name: { + type: String, + required: true + }, + pets: Array + }) + + people.schema.pre('save',inquisitor) // let the inquisitor validate and purge + // heretic (erroneous) data + + people.model = mongoose.model('People',people.schema) people.index = function (callback) { people.model.find({}, callback)