I am new to Nodejs. I have app.js and index.js inside the route directory. I have app.use(multer....) . I also have app.post('filter-reports') , which actually uploads the contents of the file to the server.
I have the business logic that needs to be executed and configured the routes inside the routes/index.js , where I intend to configure the route /filter-reports . Please help me understand what I'm wrong about. I need to upload a file using multer , also run my business logic present in index.js file.
App.js file:
var express = require('express'); var path = require('path'); var favicon = require('static-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var _ = require('underscore'); var cache = require('js-cache'); var multer = require('multer'); var routes = require('./routes/index'); var users = require('./routes/users'); var app = express(); app.all('*', function(req, res, next) { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "X-Requested-With"); next(); }); // view engine setup app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(favicon()); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded()); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', routes); app.use('/users', users); var done=false; app.use(multer({ dest: './uploads/', rename: function (fieldname, filename) { return filename+Date.now(); }, onFileUploadStart: function (file) { console.log(file.originalname + ' is starting ...') }, onFileUploadComplete: function (file) { console.log(file.fieldname + ' uploaded to ' + file.path) done=true; } })); // catch 404 and forward to error handler app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); app.post('filter-reports',function(req,res){ console.log('Working on the filtered reports....'); if(done==true){ console.log(req.files); res.end("File uploaded."); } }); /// error handlers // development error handler // will print stacktrace if (app.get('env') === 'development') { app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: err }); }); } // production error handler // no stacktraces leaked to user app.use(function(err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: {} }); }); module.exports = app; var express = require('express'); var request = require("request"); var _ = require('underscore'); var jscache = require('js-cache'); var schedule = require('node-schedule'); var filename;
In the index.js file
var router = express.Router(); router.post('/filter-reports', function(req, res) { console.log('Came inside the Node js router.. Now.. its all up to me to format the data....'); // console.log(req.files); // console.log('Came insode the filter-reports app url >>>>'); // if(done==true){ // console.log(req.files); // console.log('Files uploaded succesfully ....'); //res.end("File uploaded."); // } });
My package structure is as follows:
app.js bin node_modules package.json public routes views
My package.json
{ "name": "nodetest1", "version": "0.0.1", "private": true, "scripts": { "start": "node ./bin/www" }, "dependencies": { "express": "~4.2.0", "static-favicon": "~1.0.0", "morgan": "~1.0.0", "cookie-parser": "~1.0.1", "body-parser": "~1.0.0", "debug": "~0.7.4", "multer": "~0.1.6", "jade": "~1.3.0" } }
Thanks in advance, Pradeep