feat: request middleware to convert empty strings to null.

This commit is contained in:
Ahmed Bouhuolia
2020-11-09 21:12:50 +02:00
parent f151e6242e
commit 0718d26181
5 changed files with 26 additions and 3 deletions

View File

@@ -14,7 +14,7 @@ export default class ContactsController extends BaseController {
check('company_name').optional().trim().escape(), check('company_name').optional().trim().escape(),
check('display_name').exists().trim().escape(), check('display_name').exists().trim().escape(),
check('email').optional().isEmail().trim().escape(), check('email').optional({ nullable: true }).normalizeEmail().isEmail(),
check('website').optional().trim().escape(), check('website').optional().trim().escape(),
check('work_phone').optional().trim().escape(), check('work_phone').optional().trim().escape(),
check('personal_phone').optional().trim().escape(), check('personal_phone').optional().trim().escape(),

View File

@@ -86,8 +86,8 @@ export default class CustomersController extends ContactsController {
*/ */
get createCustomerDTOSchema() { get createCustomerDTOSchema() {
return [ return [
check('opening_balance').optional().isNumeric().toInt(), check('opening_balance').optional({ nullable: true }).isNumeric().toInt(),
check('opening_balance_at').optional().isISO8601(), check('opening_balance_at').optional({ nullable: true }).isISO8601(),
check('currency_code').optional().trim().escape(), check('currency_code').optional().trim().escape(),
]; ];

View File

@@ -0,0 +1,8 @@
import { Request, Response, NextFunction } from 'express';
import { convertEmptyStringsToNull } from 'utils';
export default (req: Request, res: Response, next: NextFunction) => {
const transfomedBody = convertEmptyStringsToNull(req.body);
req.body = transfomedBody;
next();
};

View File

@@ -7,6 +7,7 @@ import i18n from 'i18n';
import routes from 'api'; import routes from 'api';
import LoggerMiddleware from 'api/middleware/LoggerMiddleware'; import LoggerMiddleware from 'api/middleware/LoggerMiddleware';
import AgendashController from 'api/controllers/Agendash'; import AgendashController from 'api/controllers/Agendash';
import ConvertEmptyStringsToNull from 'api/middleware/ConvertEmptyStringsToNull';
import config from 'config'; import config from 'config';
export default ({ app }) => { export default ({ app }) => {
@@ -36,6 +37,9 @@ export default ({ app }) => {
// Logger middleware. // Logger middleware.
app.use(LoggerMiddleware); app.use(LoggerMiddleware);
// Converts empty strings to null of request body.
app.use(ConvertEmptyStringsToNull);
// Prefix all application routes. // Prefix all application routes.
app.use(config.api.prefix, routes()); app.use(config.api.prefix, routes());

View File

@@ -195,6 +195,16 @@ const entriesAmountDiff = (newEntries, oldEntries, amountAttribute, idAttribute)
.value(); .value();
}; };
const convertEmptyStringsToNull = (obj) => {
return _.mapValues(obj, (value, key) => {
return typeof value === 'string' ?
value.trim() === '' ?
null :
value :
value;
});
};
export { export {
hashPassword, hashPassword,
origin, origin,
@@ -214,4 +224,5 @@ export {
getDefinedOptions, getDefinedOptions,
entriesAmountDiff, entriesAmountDiff,
convertEmptyStringsToNull,
}; };