user11955307
user11955307

Reputation:

Route.post() requires a callback function but got a [object Undefined] while compiling nodeJS

I'm following a tutorial for API basics, whenever I run my project I get the error Error: Route.post() requires a callback function but got a [object Undefined] here is my routes file

module.exports = function (app) {
    var todoList = require('../controllers/todoListController');
    app.route('/tasks')
        .get(todoList.list_all_tasks)
        .post(todoList.create_a_task);

    app.route('/task/:taskId')
        .get(todoList.read_a_task)
        .put(todoList.update_a_task)
        .delete(todoList.delete_a_task);
};

and here is my server.js file

var express = require('express'),
    app = express(),
    port = process.env.PORT || 3000,
    mongoose = require('mongoose'),
    Task = require('./api/models/todoListModel'), //created model loading here
    bodyParser = require('body-parser');

// mongoose instance connection url connection
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://localhost/Tododb');


app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());


var routes = require('./api/routes/todoListRoutes'); //importing route
routes(app); //register the route


app.listen(port);


console.log('todo list RESTfaul API server started on: ' + port);

Even though I've tried passing a callback function to post method, but still it won't compile

Upvotes: 0

Views: 165

Answers (2)

Abdul Hamid
Abdul Hamid

Reputation: 3252

You can try doing this.

...

app.route('/tasks')
   .get((req, res) => { return todoList.list_all_tasks( req, res) }),
   .post((req, res) => { return todoList.create_a_task(req, res) })

Upvotes: 1

Aliaksandr Pitkevich
Aliaksandr Pitkevich

Reputation: 834

U need to insert callback to your post method

module.exports = function (app) {
    var todoList = require('../controllers/todoListController');
    app.route('/tasks')
        .get(todoList.list_all_tasks)
        .post(todoList.create_a_task, function(req, res) {//smth});
};

Upvotes: 1

Related Questions