This is my server.js file and api.js file. I am getting an error in the sort function in which I intend to search the js objects according to their attributes.The event Schema has the attributes as name, location, price, rating. I tried to sort it according to their prices.
server.js
var express= require('express'); var bodyParser= require('body-parser'); var morgan = require('morgan'); var config=require('./config'); var app= express(); var mongoose=require('mongoose'); //var User=require('./database/user') mongoose.connect('mongodb://localhost:27017/db',function(err){ if(err){ console.log(err); } else{ console.log("connected!"); } }); app.use(bodyParser.urlencoded({extended: true })); //if false then parse only strings app.use(bodyParser.json()); app.use(morgan('dev'));//log all the requests to the console var api=require('./app/routes/api')(app,express); app.use('/api',api); app.get('*',function(req,res){ res.sendFile(__dirname + '/public/views/index.html'); }); // * means any route app.listen(config.port,function(err){ if(err){enter code here console.log(err); } else{ console.log("The server is running"); } }); module.exports = router;
api.js
var User = require('../models/user'); var Event = require('../models/event'); var config = require('../../config'); var secret = config.secretKey; module.exports = function (app, express) { var api = express.Router(); app.use() api.post('/signup', function (req, res) { var user = new User({ name: req.body.name, username: req.body.username, password: req.body.password }); user.save(function (err) { if (err) { res.send(err); return; } res.json({ message: 'User created!' }); }); }); api.get('/users', function (req, res) { User.find({}, function (err, users) { if (err) { res.send(err); return; } res.json(users); }); }); api.post('/eventfeed', function (req, res) { var event = new Event({ name: req.body.name, location: req.body.location, description: req.body.description, price: req.body.price, rating: req.body.rating }); event.save(function (err) { if (err) { res.send(err); return; } res.json({ message: 'Event created!' }); }); }); // utility function for sorting an array by a key in alpha order api.get('/sortby_price', function (err) { if (err) return err; // utility function for sorting an array by a key in parsed numeric order else { function sortArrayNum(arr, key) { arr.sort(function (a, b) { return parseInt(a[key], 10) - parseInt(b[key], 10); }); } var dicts = EventSchema.saved; for (var i = 0; i < dicts.length; i++) { var terms = dicts[i].terms; sortArrayNum(terms, "price"); } } return api; }); }
This is my error. I am making a webpage for the first time using this. Kindly help me what does this error tells.
TypeError: app.use() requires middleware functions
at EventEmitter.use (c:\Users\MY APY\WebstormProjects\Main\node_modules\express\lib\application.js:209:11)
at module.exports (c:\Users\MY LAPY\WebstormProjects\Main\app\routes\api.js:10:9)
at Object. (c:\Users\MY LAPY\WebstormProjects\Main\server.js:20:36)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3
Middleware functions are functions that have access to the request object (req), the response object (res), and the next middleware function in the application's request-response cycle. These functions are used to modify req and res objects for tasks like parsing request bodies, adding response headers, etc.
The main purpose of the middleware is to modify the req and res objects, and then compile and execute any code that is required. It also helps to terminate the request-response session and call for the next middleware in the stack.
The app. use() method mounts or puts the specified middleware functions at the specified path. This middleware function will be executed only when the base of the requested path matches the defined path.
I had this problem when I left out
module.exports = router;
in my Routes.js.We need to export all the routes.
In my server.js, I had
var mainRoutes = require('./Routes.js') app.use(mainRoutes)
So check your 'app/routes/api' file to see if it has proper export.
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