0

I'm using mysql-orm in a Nodejs Express app this is my code:

app.js:

// ... all variables are initialized
var orm = null;
var app = express();

db.create(dbSchema, dbSeeds, dbOptions, function(err, ormObject) {
    if (err) throw err;
    orm = ormObject;
});

var coursesRoutes = require('./routes/dashboard/courses')(orm);
app.use('/dashboard/courses', coursesRoutes);

/routes/dashboard/courses.js:

var express = require('express');
var router = express.Router();

module.exports = function(orm) {

    router.get('/listall', function(req, res, next) {
        orm.loadMany('sections', null, function(err, sections) {
            if (err) throw err;
            res.jsonp(sections);
        });
    });
    return router;
};

And this returns this error:

TypeError: Cannot read property 'loadMany' of null

I know that the problem is that orm variable is passed to file before it is initialized in the db.create callback but I don't know how to solve this.

I tried to put:

var coursesRoutes = require('./routes/dashboard/courses')(orm);
app.use('/dashboard/courses', coursesRoutes);

inside the callback but it returns 404 not found

Burawi
  • 451
  • 4
  • 16

1 Answers1

0

Your courses function is getting called before db connection is established.

This should do the trick.

var orm = null;
var app = express();

db.create(dbSchema, dbSeeds, dbOptions, function(err, ormObject) {
    if (err) throw err;
    orm = ormObject;
    var coursesRoutes = require('./routes/dashboard/courses')(orm);
    app.use('/dashboard/courses', coursesRoutes);
});
AdityaParab
  • 7,024
  • 3
  • 27
  • 40