Alex
Alex

Reputation: 1205

ExpressJS Modules with Controller/Manager

I'm trying to create an API using express, but having difficulties with the initial setup, I'd like to have separate classes for the controllers & managers, but keep getting the following error when trying to register my routes:

Cannot read property 'post' of undefined

Here is my setup so far:

app.js

const express = require('express');
const app = express();
const port = process.env.PORT || 3000;
var UserController = require('./lib/controllers/user/user.controller');

userController = new UserController();

app.use('/user', userController);

app.listen(port);
console.log('Listening on port 3000...');

module.exports = app;

user.controller.js

const {register, login} = require('../routes').user;
var userManager = require('../../managers/user/user.manager');
const express = require('express');
const expressApp = express.Router();

class UserController {

constructor(
    ) {
        userManager = new userManager();    
        this.expressApp.post(register, this.register.bind(this));
    }

    register(request, response) {
        return userManager
            .register(request)
            .then(result => response.status(statusCodes.OK).json(result))
            .catch(e);
    }
}

module.exports = UserController;

Upvotes: 0

Views: 219

Answers (1)

Sébastien S.
Sébastien S.

Reputation: 1544

In UserController's constructor.

You're trying to use this.expressApp while this.expressApp is not defined.

Upvotes: 1

Related Questions