我有一个 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/