// Express Middleware built to convert all incoming request body data to snake_case // Requires npm install lodash const { snakeCase } = require("lodash") const snakeCaseKeys = (data) => { // check to see if req.body is an array. if (Array.isArray(data)) { // if Array, map() through all objects in Array. return data.map((object) => snakeCaseKeys(object)) } else if (data !== null && data.constructor === Object) { return Object.keys(data).reduce( (result, key) => ({ ...result, [toSnakeCase(key)]: snakeCaseKeys(data[key]), }), {} ) } return data } const toSnakeCase = (str) => snakeCase(str) // Middleware. Map through req.body and call next() const convertToSnakeCase = (req, res, next) => { // before console.log(req.body) req.body = snakeCaseKeys(req.body) // after console.log(req.body) next() } module.exports = convertToSnakeCase