| node_modules/ | node_modules/ | ||||
| loggerFiles/ | loggerFiles/ | ||||
| public/loggerFiles |
| const mongoose = require('mongoose') | const mongoose = require('mongoose') | ||||
| const Joi = require('joi') | |||||
| const userSchema = new mongoose.Schema({ | const userSchema = new mongoose.Schema({ | ||||
| name: { | name: { | ||||
| }] | }] | ||||
| }) | }) | ||||
| userSchema.statics.joiValidate = async function(obj) { | |||||
| const schema = Joi.object({ | |||||
| name: Joi.string().min(2).required(), | |||||
| password: Joi.string().min(8).regex(/[a-zA-Z0-9]{3,30}/).required(), | |||||
| email: Joi.string().email().required(), | |||||
| role: Joi.string() | |||||
| }) | |||||
| const validation = schema.validate(obj); | |||||
| return validation.error | |||||
| } | |||||
| // userSchema.pre('save', async function(next) { | // userSchema.pre('save', async function(next) { | ||||
| // const user = this | // const user = this | ||||
| // console.log('pre hash: ' + user.password) | // console.log('pre hash: ' + user.password) |
| return res.status(400).send('Object cant be empty') | return res.status(400).send('Object cant be empty') | ||||
| } | } | ||||
| const err = await User.joiValidate(userModel) | |||||
| const err = getUserValidator.validate(userModel).error | |||||
| if (err) { | if (err) { | ||||
| return res.status(400).send(err.message) | return res.status(400).send(err.message) | ||||
| } | } | ||||
| if (Object.entries(objBody).length == 0) { | if (Object.entries(objBody).length == 0) { | ||||
| return res.status(400).send('Invalid input parameters') | return res.status(400).send('Invalid input parameters') | ||||
| } | } | ||||
| const err = await User.joiValidate(objBody) | |||||
| const err = getUserValidator.validate(objBody).error | |||||
| if (err) { | if (err) { | ||||
| return res.status(400).send(err.message) | return res.status(400).send(err.message) | ||||
| } | } |
| format: winston.format.json(), | format: winston.format.json(), | ||||
| defaultMeta: { service: 'user-service' }, | defaultMeta: { service: 'user-service' }, | ||||
| transports: [ | transports: [ | ||||
| new winston.transports.File({ filename: 'loggerFiles/error.log', level: 'error' }), | |||||
| new winston.transports.File({ filename: 'loggerFiles/all.log', level: 'silly' }), | |||||
| new winston.transports.File({ filename: '../public/loggerFiles/error.log', level: 'error' }), | |||||
| new winston.transports.File({ filename: '../public/loggerFiles/all.log', level: 'silly' }), | |||||
| ], | ], | ||||
| }); | }); | ||||
| const schema = { | const schema = { | ||||
| getUserValidator: Joi.object({ | getUserValidator: Joi.object({ | ||||
| id: Joi.string().required() | |||||
| name: Joi.string().min(2).required(), | |||||
| password: Joi.string().min(8).regex(/[a-zA-Z0-9]{3,30}/).required(), | |||||
| email: Joi.string().email().required(), | |||||
| role: Joi.string() | |||||
| }) | }) | ||||
| } | } | ||||