I'm uploading csv file in feathers service and the file size is 203kb, it throw an error request entity too large error something like this.
error:
{
"name": "GeneralError",
"message": "request entity too large",
"code": 500,
"className": "general-error",
"data": {},
"errors": {}
}
i'm writing middle ware code something like this but i can't able to resolve
app.js:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
location.service.js:
// Initializes the `location` service on path `/location`
const createService = require('feathers-mongoose');
const createModel = require('../../models/location.model');
const hooks = require('./location.hooks');
const filters = require('./location.filters');
const multer = require('multer');
const multipartMiddleware = multer();
module.exports = function () {
const app = this;
const Model = createModel(app);
const paginate = app.get('paginate');
const options = {
name: 'location',
Model,
paginate
};
// Initialize our service with any options it requires
app.use('/location',
multipartMiddleware.single('uri'),
(req, res, next) => {
req.feathers.file = req.file;
next();
},
createService(options)
);
// Get our initialized service so that we can register hooks and filters
const service = app.service('location');
service.hooks(hooks);
if (service.filter) {
service.filter(filters);
}
};
location.hooks.js:
const { authenticate } = require('feathers-authentication').hooks;
module.exports = {
before: {
all: [ authenticate('jwt') ],
find: [],
get: [],
create: [function(hook, next){
var tHeader = Object.keys(hook.data)[0].split('\n')[0].replace(/\r?\n|\r/g, " ").split(',');
var s = Object.keys(hook.data)[0].split('\n');
s.shift();
var tBody = s.map(d=> d.replace(/\r?\n|\r/g, " ").split(','));
var jointObj = [];
const mergeArrToJSON = (a, b) => a
.map((item, i) => ({[item.replace(/\s+/g,'')]: b[i]}))
.reduce((json,val)=>Object.assign({},json,val));
tBody.forEach(p1=>{
var a = tHeader, b = p1;
jointObj.push(mergeArrToJSON(a,b))
})
var insertObj = [];
jointObj.pop()
jointObj.forEach(d=>{
var Obj = {};
for(k in d) {
var f = /[/]/;
if(f.test(k) == true){
var s = k.split('/');
if(Obj.hasOwnProperty(s[0]) !== true){
Obj[s[0]] = {[s[1].charAt(0).toLowerCase() + s[1].slice(1)]:d[k]};
} else {
Obj[s[0]][s[1].replace(/\s+/g,'')] = d[k].replace(/\s+/g,'');
}
} else {
Obj[k] = d[k];
}
}
insertObj.push(Obj)
});
hook.data = insertObj;
next();
}],
update: [],
patch: [],
remove: []
},
after: {
all: [],
find: [],
get: [],
create: [],
update: [],
patch: [],
remove: []
},
error: {
all: [],
find: [],
get: [],
create: [],
update: [],
patch: [],
remove: []
}
};
i'm using postman to upload csv file
I have change code in app.js file
before:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
after:
app.use(bodyParser.json({limit: '100mb'}));
app.use(bodyParser.urlencoded({
limit: '100mb',
extended: true
}));
open app.js file and replace following lines
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
With
app.use(express.json({ limit: "50mb" }));
app.use(express.urlencoded({ limit: "50mb", extended: true }));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With