数据库回调后使用Express应用程序

时间:2016-03-25 07:23:27

标签: javascript mysql node.js express-4

我在Nodejs Express应用程序中使用mysql-orm这是我的代码:

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;
};

这会返回此错误:

  

TypeError:无法读取null

的属性'loadMany'

我知道问题是orm变量在db.create回调中初始化之前传递给文件但我不知道如何解决这个问题。

我试着说:

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

在回调中,但它返回404未找到

1 个答案:

答案 0 :(得分:0)

在建立数据库连接之前,您的课程功能已被调用。

这应该可以解决问题。

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);
});