gpt4 book ai didi

node.js - 如何将几个变量从 mongodb 查询传递到 jade tpl

转载 作者:可可西里 更新时间:2023-11-01 10:27:19 26 4
gpt4 key购买 nike

//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 模板

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 tpl 中收到此错误消息无法读取未定义的属性“长度”

但是如果我写

   catcollection.find({},{},function(e,catss){
cats=catss;
console.log('cats --> '+util.inspect(cats));
**res.render('newpost', {
cats:cats, title: 'Add New post'});**

}); // end find all cats for select

它将类别列表传递给 jade,但我无法将帖子列表传递给 jade。如何将少量变量(posts 和 cats)传递给 jade tpl?

最佳答案

两个 .find 都是异步执行的,因此您不知道何时(或是否)完成其中一个。也就是说,在尝试呈现模板之前,您需要等到 两个 回调都被调用。

当前实现中最简单的方法是嵌套所有内容:

postcollection.find({},{},function(e,docs){
// handle errors
catcollection.find({},{},function(e,cats){
res.render('newpost', {
posts : docs, cats:cats, title: 'Add New post'});
});
});
});

但是您可以同时执行这些查询,因为它们不相互依赖。做到这一点的最佳方法可能是使用 promise 。

Promise.all([postcollection.find(), catcollection.find()])
.then(function (docs, cats) {
res.render('newpost', {
posts : docs, cats:cats, title: 'Add New post'});
});
});

这假设 .find 返回一个 promise 。它应该适用于当前的 Mongo 驱动程序。

关于node.js - 如何将几个变量从 mongodb 查询传递到 jade tpl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32610497/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com