From 766b60adf81664c59bda39ebc5350af67e325f4e Mon Sep 17 00:00:00 2001 From: Mateja Date: Sat, 8 May 2021 21:20:42 +0200 Subject: Added more validation. --- models/post.js | 16 +++++++++++++--- models/user.js | 37 +++++++++++++++++++++++++++++++++---- 2 files changed, 46 insertions(+), 7 deletions(-) (limited to 'models') diff --git a/models/post.js b/models/post.js index 8227c85..f01431b 100644 --- a/models/post.js +++ b/models/post.js @@ -1,9 +1,19 @@ const mongoose = require('mongoose'); const postSchema = new mongoose.Schema({ - title: {type: String, required: true}, - text: {type: String, required: true}, - date: {type: Date, default: Date.now} + title: { + type: String, + required: [true, "You need to provide a title."], + maxLength: [100, "You can't have a title more than 100 characters long."] + }, + text: { + type: String, + required: [true, "You need to provide some text."] + }, + date: { + type: Date, + default: Date.now + } }); const postModel = mongoose.model('post', postSchema); diff --git a/models/user.js b/models/user.js index 3751aae..525e5df 100644 --- a/models/user.js +++ b/models/user.js @@ -1,10 +1,39 @@ const mongoose = require('mongoose'); +const validator = require('validator'); const userSchema = new mongoose.Schema({ - firstname: {type: String, required: true}, - lastname: {type: String, required: true}, - email: {type: String, required: true}, - password: {type: String, required: true}, + firstname: { + type: String, + required: [true, "You need to provide your first name."], + maxLength: [32, "You can't have a first name longer than 32 characters."], + validate: { + validator: validator.isAlpha, + message: props => "Your first name can only contain characters." + } + }, + lastname: { + type: String, + required: [true, "You need to provide your last name."], + maxLength: [32, "You can't have a last name longer than 32 characters."], + validate: { + validator: validator.isAlpha, + message: props => "Your last name can only contain characters." + } + }, + email: { + type: String, + required: [true, "You need to provide an email."], + maxLength: [100, "You can't have a email longer than 100 characters."], + validate: { + validator: validator.isEmail, + message: props => "Email is not valid." + } + }, + password: { + type: String, + required: [true, "You need to provide a password."], + maxLength: [100, "You can't have a password longer than 100 characters."] + }, }); const userModel = new mongoose.model('user', userSchema); -- cgit v1.2.3