body, html {
height:100%;
}
.introimage {
height: 100%;
background-image: url(img/wald.gif);
background-size: cover;
background-position: bottom;
}
玉石模板
//posts
var docs, cats;
var db = req.db;
var catcollection = db.get('catcollection');
var postcollection = db.get('postcollection');
// find all post
postcollection.find({},{},function(e,docs){
console.log('posts ---> '+util.inspect(docs));
}); // end find all post
catcollection.find({},{},function(e,catss){
cats=catss;
console.log('cats --> '+util.inspect(cats)); //<<<---- write objects from mongo
}); // end find all cats for select
res.render('newpost', {
posts : docs, cats:cats, title: 'Add New post'});
}); **//<<<---it didn't passing the cats:cats and post vars to jade **
我在jade tpl中收到此错误消息 无法读取未定义的属性“长度”
但如果我写了
extends layout
block content
h1= title
form#formAddPost(name="addpost",method="post",action="/addpost")
input#inputPostTitle(type="text", placeholder="posttitle", name="posttitle")
textarea#inputPostTitle(placeholder="postdesc", name="postdesc")
textarea#inputPostTitle(placeholder="posttext", name="posttext")
select#selectPostCats(placeholder="postdesc", name="posttext")
each cat, i in cats
option(value="#{cat._id}") #{cat.titlecat}
button#btnSubmit(type="submit") submit
ul
each post, i in posts
li= i+" "
a(href="/editpst/#{post._id}")=#{post.title}
它将类别列表传递给jade,但我无法将帖子列表传递给jade。 如何将少数变量(帖子和猫)传递给jade tpl?
答案 0 :(得分:2)
两个.find
都以异步方式执行,因此您不知道何时(或是否)将完成任何一个。也就是说,在尝试渲染模板之前,需要等到两个的回调都被调用。
当前实现中最简单的方法是嵌套所有内容:
postcollection.find({},{},function(e,docs){
// handle errors
catcollection.find({},{},function(e,cats){
res.render('newpost', {
posts : docs, cats:cats, title: 'Add New post'});
});
});
});
但是,您可以同时执行这些查询,因为它们不相互依赖。最好的方法是使用promises。
Promise.all([postcollection.find(), catcollection.find()])
.then(function (docs, cats) {
res.render('newpost', {
posts : docs, cats:cats, title: 'Add New post'});
});
});
这假设.find
返回一个承诺。它应该适用于当前的Mongo驱动程序。