Mongoose:将find()的结果显示为表格

时间:2014-01-29 13:19:11

标签: mongoose

我正在寻找一个非常简单的示例,说明如何获取此代码的输出并将其转换为可以通过Jade显示的HTML。

var server1 = Server.find({},
            function(err, docs) {
            if (!err){ 
               console.log(docs);
                      }
            else { throw err;}
            }
    );
 res.render('servers', { title: 'verify', results: server1});
}

我的玉模板包含:

table
  each result in results
    tr
      td= result.name
      td= result.os

但是,我收到此错误:无法读取未定义的属性'name'

如果我尝试'结果',我会得到看起来像MongoDB设置的转储。

当我加载页面时,我的console.log看起来像这样,所以我知道我从数据库中提取虚拟数据但是我无法在Jade中显示它:

{osVersion:'gbgbgb',     os:'bgbgbgb',     名称:'bgbgbgbgb',     _id:52e1574c10abec5571b99be2,     __v:0,     许可证:[],     createdOn:Thu Jan 23 2014 12:54:20 GMT-0500(EST)},   {osVersion:'h',     os:'h',     名称:'h',     _id:52e15e5510abec5571b99be3,     __v:0,     许可证:[],     createdOn:2014年1月23日星期四13:24:21 GMT-0500(EST)}

2 个答案:

答案 0 :(得分:1)

您需要从回调函数中调用res.render

var server1 = Server.find({},
        function(err, docs) {
        if (!err){ 
            res.render('servers', { title: 'verify', results: docs });
                  }
        else { throw err;}
        }

);

Server.find()的返回值不是查询的结果,查询的结果将传递给回调函数。

关于查询的Mongoose文档页面(http://mongoosejs.com/docs/queries.html)有很多find()函数的好例子。

答案 1 :(得分:0)

这似乎运作得相当不错

exports.index = function(req, res){
  Server.find({},
    function(err, docs) {
      if (!err){ 
          res.render('servers', { title: 'verify', results: docs});
      }
      else { throw err;}
    }
  );
}

然后我的Jade文件看起来像这样:

  table
    each result in results
      tr
        td #{result.name}
        td #{result.os}
        td #{result.createdOn}