在ExpressJS中将MongoDB数据传递给Jade视图

我有一个问题,我希望你能帮助。 基本上,我正在对MongoDB集合进行查询,并尝试将结果传递回玉视图。

app.helpers({ clients: function(){ users.find({uid:req.session.uid}).toArray(function(err, post){ if(err){ console.log(err); }else{ return post; } }); } }); 

这是我在视图中引用帮助对象的地方

 p #{clients} 

现在我只是将[object Object]作为视图中的值。 如果我logging结果,我会得到预期的文档结果,但如果我尝试将其推入数组或var,我得到[对象对象]结果。 有任何想法吗?

这将无法正常工作,因为您使用以下结构:

 clients: function() { (some code)(function() { return variable; }); } 

return variable; 语句从内部函数返回。 但是你需要从外部函数返回variables。 那么如何做到这一点? 其实你不能。 您应该在视图中执行查询并将结果存储在请求中,然后将请求variables传递给模板。 你不能在助手中使用asynchronous函数。

另一件事是当你在助手中使用一个函数,然后在模板中,你应该使用

 p #{ clients() } 

因为这是一个function。 尽pipe如此,在这种情况下不起作用。