node.js - 从数据库填充导航栏数据

标签 node.js sails.js sails-postgresql

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

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

但是由于 sails 的一些异步功能,仅当 Controller 发送响应时才会调用该服务,而不是在请求到达策略时调用。这在 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();

}

最佳答案

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

关于node.js - 从数据库填充导航栏数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39912066/

相关文章:

node.js - Elasticsearch:空命中数组,尽管总数大于 0

javascript - 内部函数返回父函数,如何?

javascript - Waterline ORM - 检查数组属性是否包含值

javascript - 如何使用 passport.js 登录的用户测试 sail.js Controller

javascript - 为什么我对 PostgreSQL DB 的发布请求将我的 UTC DATETIME 保存为本地时间

postgresql - sailspostgresql 使用 sails lift 命令时出错?

node.js - 使用 node.js 将目录中的所有文件移动到父级

node.js - SailsJS 连接

testing - 如何在测试期间模拟 Sails.js/Waterline 模型

javascript - 如何使用 Protractor 从表格中获取特定单元格值