From de45cff6a34625063223b04eb201559f98b8cc33 Mon Sep 17 00:00:00 2001 From: fvieira Date: Sat, 4 Mar 2017 13:43:15 +0100 Subject: [PATCH] validation done on server side --- backend/app/people/inquisitor-validator.js | 26 ++++++++++++++++++++++ backend/app/people/people.js | 15 ++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 backend/app/people/inquisitor-validator.js diff --git a/backend/app/people/inquisitor-validator.js b/backend/app/people/inquisitor-validator.js new file mode 100644 index 0000000..d6fcf64 --- /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 509d4a8..1aefc2c 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) -- 2.18.1