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

Passing MongoDB data to Jade view in ExpressJS

本文关键字:ExpressJS 中的 Jade 视图 MongoDB 数据      更新时间:2023-09-26

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

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

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

p #{clients}

现在我正在获取[对象对象]作为视图中的值。如果我记录结果,我会得到预期的文档结果,但如果我试图将其推送到数组或var中,我会获得[object object]结果。有什么想法吗?

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

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

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

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

p #{ clients() }

因为它是一个函数。尽管如此,在这种情况下它不会起作用。