我正在使用KeystoneJS和Handlebars来查看视图。我一直试图从MongoDB中获取一个公司列表,以便在导航栏中加载,但没有成功。我知道去哪里更新navLinks,我可以在一个页面上从mongodb加载公司。我想在导航中的所有页面上加载公司列表,并且公司列表不是静态的。在导航渲染之前,我会将代码放在何处加载数据?
答案 0 :(得分:0)
您可以在routes / middleware.js中的'initLocals'中间件中添加自己的局部变量,这些中间件将在执行路径控制器之前运行:
路由/ middleware.js
exports.initLocals = function(req, res, next) {
var locals = res.locals;
locals.user = req.user;
// Add your own local variables here
next();
};
查看Keystone.js文档中的 Common Route Middleware 部分: http://keystonejs.com/docs/getting-started/
答案 1 :(得分:0)
我终于开始工作了
exports.initLocals = function (req, res, next) {
res.locals.navLinks = [
{ label: 'Accueil', key: 'home', href: '/' },
{ label: 'Projets', key: 'projects', href: '/projects' },
{ label: 'Contacts', key: 'users', href: '/contacts' },
{ label: 'Livrables', key: 'deliverables',href: '/deliverables' },
{ label: 'Fichier sources', key: 'sources', href: '/sources' }
];
//Get available companies for the user
var view = new keystone.View(req,res);
view.query('companies', keystone.list('Company').model.find().populate('project').sort('title')).then(function (err, results, next) {
if (err) return next(err);
next();
});
view.render(function(){
next();
});
};