orm从单个页面加载

时间:2017-07-10 23:04:55

标签: javascript mysql node.js sequelize.js

我有这个问题:需要在一个页面(page.hbs)上显示不同的表格数据。我使用的是nodejs orm sequelize,mysql数据库,Handlebars。当页面page.hbs的get方法需要从两个不同的表中获取数据时。这是我的代码:

模型:

var roof_type = sequelize.define('roof_type', {
id: {
        type: DataTypes.INTEGER,
        autoIncrement: true,
        primaryKey: true,
        allowNull: false
    },
description: {
        type: DataTypes.STRING(50),
        allowNull: true
    }
});

return roof_type;


var garret_type = sequelize.define('garret_type', {
    id: {
        type: DataTypes.INTEGER,
        autoIncrement: true,
        primaryKey: true,
        allowNull: false
    },
    description: {
        type: DataTypes.STRING(50),
        allowNull: true
    }

});

return garret_type;

authcontroller.js:

exports.page_admin = function (req, res) {
db.roof_type.findAll({
    description: 'description ASC'

}).then(function (data) {

    var hbsObject = {
        roof_types: data
    };
    res.render('page_admin', hbsObject);
});
}


exports.page_admin = function (req, res) {
db.garret_type.findAll({
    description: 'description ASC'

}).then(function (data) {

    var hbsObject = {
        garret_types: data
    };
    res.render('page_admin', hbsObject);
});
}

路线:

module.exports = function (app, passport) {

app.get('/page_admin', isLoggedIn, authController.page_admin);

............

请帮忙(我真的不明白如何获取一个查询来访问两个表,因为据我所知你需要修复authcontroller.js(合并请求))谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

使用Promises

Promise.all([db.findAll(tableA), db.findAll(tableB)])
.then((data) => {
   //data[0] is response from tableA find
   // data[1] is from tableB
})