将MongoDB数据传递到ExpressJS中的Jade视图

时间:2012-02-25 06:27:43

标签: javascript node.js express pug

我有一个问题,希望你能提供帮助。基本上,我正在对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]作为视图中的值。如果我记录结果,我将获得预期的文档结果,但如果我尝试将其推入数组或var,我得到[object Object]结果。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这不会起作用,因为您使用以下结构:

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

return variable;语句从内部函数返回。但是你需要从外部函数返回变量。那怎么做?实际上你不能。您应该在视图中执行查询并将结果存储在请求中,然后将请求变量传递给模板。您不能在帮助程序中使用异步函数。

另一件事是当你在帮助器中使用一个函数时,那么在模板中你应该使用

p #{ clients() }

因为它是一个功能。然而,在这种情况下,它不会起作用。