Explorar o código

Use Sequelize validation

sbkwgh %!s(int64=8) %!d(string=hai) anos
pai
achega
b9b140006e
Modificáronse 2 ficheiros con 29 adicións e 24 borrados
  1. 20 2
      models/settings.js
  2. 9 22
      routes/settings.js

+ 20 - 2
models/settings.js

@@ -1,7 +1,25 @@
 module.exports = (sequelize, DataTypes) => {
 	let Settings = sequelize.define('Settings', {
-		forumName: DataTypes.STRING,
-		forumDescription: DataTypes.STRING
+		forumName: {
+			type: DataTypes.STRING,
+			validate: {
+				isString (val) {
+					if(typeof val !== 'string') {
+						throw new sequelize.ValidationError('The name must be a string')
+					}
+				}
+			}
+		},
+		forumDescription: {
+			type: DataTypes.STRING,
+			validate: {
+				isString (val) {
+					if(typeof val !== 'string') {
+						throw new sequelize.ValidationError('The description must be a string')
+					}
+				}
+			}
+		}
 	}, {
 		classMethods: {
 			set (values) {

+ 9 - 22
routes/settings.js

@@ -2,7 +2,7 @@ let express = require('express')
 let router = express.Router()
 
 const Errors = require('../lib/errors')
-let { Settings } = require('../models')
+let { Settings, Sequelize } = require('../models')
 
 router.get('/', async (req, res) => {
 	try {
@@ -39,26 +39,15 @@ router.all('*', (req, res, next) => {
 })
 
 router.put('/', async (req, res) => {
-	let validationErrors = []
-	let params = {}
-
 	try {
-		if(req.body.forumName !== undefined) {
-			if(typeof req.body.forumName !== 'string') {
-				validationErrors.push(Errors.invalidParameterType('forumName', 'string'))
-			} else {
-				params.forumName = req.body.forumName
-			}
+		let params = {}
+
+		if(req.body.forumName) {
+			params.forumName = req.body.forumName
 		}
-		if(req.body.forumDescription !== undefined) {
-			if(typeof req.body.forumDescription !== 'string') {
-				validationErrors.push(Errors.invalidParameterType('forumDescription', 'string'))
-			} else {
-				params.forumDescription = req.body.forumDescription
-			}
+		if(req.body.forumDescription) {
+			params.forumDescription = req.body.forumDescription
 		}
-		
-		if(validationErrors.length) throw Errors.VALIDAITON_ERROR
 
 		let updatedSettings = await Settings.set(params)
 
@@ -68,11 +57,9 @@ router.put('/', async (req, res) => {
 		})
 		
 	} catch (e) {
-		if(e === Errors.VALIDAITON_ERROR) {
+		if(e instanceof Sequelize.ValidationError) {
 			res.status(400)
-			res.json({
-				errors: [validationErrors]
-			})
+			res.json(e)
 		} else {
 			console.log(e)
 			res.status(500)