从DB填充导航栏数据

时间:2016-10-07 07:45:49

标签: node.js sails.js sails-postgresql

我有一个sails应用程序,我想从DB填充导航栏下拉菜单数据。

我正在使用策略来调用服务并填充sails.config.views.locals.HeaderData变量

但是由于sails的某些异步功能,只有当控制器发送了响应时才会调用服务,而不是在请求来到policy.which时在ejs中给我空数组

政策

module.exports = function (req, res, next) {
try {
    if (sails.config.views.locals.HeaderData == 'undefined' || sails.config.views.locals.HeaderData == 'is not defined' || sails.config.views.locals.HeaderData == undefined) {
        sails.config.views.locals.HeaderData = [];
    }
    if (_.isEmpty(sails.config.views.locals.HeaderData)) {
        MenuItems.getMenuItems('items', function (err, response) {
            if (err) {
                sails.log.debug(err);
            }
            else {
                sails.config.views.locals.HeaderData = response[0].dataValues;
            }
        })
    }
}
catch (e) {
    console.log("errrrrr", e);
}
next();

}

1 个答案:

答案 0 :(得分:3)

next()完成之前调用

MenuItems.getMenuItems。所以在回调中移动next()语句:

MenuItems.getMenuItems('items', function (err, response) {
    if (err) {
        sails.log.debug(err);
    }else{
        sails.config.views.locals.HeaderData = response[0].dataValues;
    }
    next();
})