Node.js 从数据库填充导航栏数据
我有一个sails应用程序,我想从DB填充导航栏下拉菜单数据 我正在使用策略调用服务并填充sails.config.views.locals.HeaderData变量 但是由于sails的一些异步特性,只有当控制器发送响应时,服务才会被调用,而不是当请求到达policy时。policy在ejs中为我提供空数组 政策Node.js 从数据库填充导航栏数据,node.js,sails.js,sails-postgresql,Node.js,Sails.js,Sails Postgresql,我有一个sails应用程序,我想从DB填充导航栏下拉菜单数据 我正在使用策略调用服务并填充sails.config.views.locals.HeaderData变量 但是由于sails的一些异步特性,只有当控制器发送响应时,服务才会被调用,而不是当请求到达policy时。policy在ejs中为我提供空数组 政策 module.exports = function (req, res, next) { try { if (sails.config.views.locals.Header
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();
})
在MenuItems之前调用next()
。getMenuItems
可能已经完成。因此,将next()
语句移动到回调中:
MenuItems.getMenuItems('items', function (err, response) {
if (err) {
sails.log.debug(err);
}else{
sails.config.views.locals.HeaderData = response[0].dataValues;
}
next();
})