我有一个keystonejs app设置,使用express和jade。
我在default.jade文件中设置了全屏背景图像,该文件定义了各种导入以及网站的页眉和页脚。
我正在尝试根据通过猫鼬位于mongodb中的一系列图像来旋转图像。
我遇到了让它工作的问题,所以我一直试图让变量在我的页面标题中正确打印。
我的root中间件文件中有以下代码设置,作为export.initLocals文件的一部分:
exports.initLocals = function(req, res, next) {
var locals = res.locals;
locals.navLinks = [
{ label: 'Home', key: 'home', href: '/' },
{ label: 'News', key: 'blog', href: '/news' },
{ label: 'Creations', key: 'creation', href: '/creations' },
{ label: 'Contact', key: 'contact', href: '/contact' }
];
locals.user = req.user;
locals.imageURL = 'variable set';
WelcomeImage = keystone.list('WelcomeImage');
WelcomeImage.model.findOneRandom(function(err, result) {
if (!err) {
locals.imageURL = result.Image.url;
console.log(result.Image.url); // 1 element
} else {
console.log(err); // 1 element
}
});
next();
};
在我的default.jade文件中,我有:
//- HTML BODY
body
#background-image
//- HEADER
#header: .container
//- Customise your site's navigation by changing the navLinks Array in ./routes/middleware.js
//- ... or completely change this header to suit your design.
div(role="navigation").navbar.navbar-default
.container-fluid
.navbar-header
.visible-xs.navbar-brand-xs.a(href='/')
img(align:"left",src="/images/wild_logo.png",border=0,width=45,height=45)
button.navbar-toggle(type='button', data-toggle='collapse', data-target='.navbar-collapse')
span.sr-only Toggle navigation
span.icon-bar
span.icon-bar
span.icon-bar
.collapse.navbar-collapse
.hidden-xs.navbar-brand.a(href='/')
img(align:"left",src="/images/wild_logo.png",border=0,width=95,height=95)
ul.nav.navbar-nav.navbar-left
each link in navLinks
li(class=(section == link.key ? 'active' : null)): a(href=link.href)= link.label
ul.nav.navbar-nav.navbar-right
if user
if user.canAccessKeystone
li: a(href='/keystone') Open Keystone
li: a(href='/keystone/signout') Sign Out
else
if imageURL
| #{imageURL}
else
There is no variable
//li: a(href='/keystone/signin') Sign In
//- BODY
#body
现在每次加载页面时,我都会看到页面中呈现的变量,但它被设置为“变量集”,并且永远不会被设置为实际的URL。
现在,如果我观看控制台,在本地设置后,直接将正确的值发送到线路上的控制台。
所以,任何想法我做错了什么。我是非常新的表达/玉,所以我可能会按顺序忽略某些事情?
提前致谢!
干杯
加雷
答案 0 :(得分:0)
尝试在next()
调用的回调函数中移动findOneRandom
。您基本上告诉节点,在回调完成之前继续前进是安全的。
很高兴有帮助。谢谢!