【问题标题】:Display data with Jade: MongoDB + Monk + ExpressJS用 Jade 显示数据:MongoDB + Monk + ExpressJS
【发布时间】:2016-03-27 18:39:23
【问题描述】:

我试图在客户端显示我的 MongoDB 数据库中的一些数据,但我不断收到以下错误:8| li 9| #{victim.first-name} > 10| Cannot read property 'first' of undefined

我一直在关注此tutorial,但由于某种原因,我一直遇到该错误消息...有什么想法吗?

我的 app.js 文件的相关部分:

var mongo = require('mongodb');
var monk = require('monk');
var db = monk('ds012345.mlab.com:12345/dbname');

var routes = require('./routes/index');
var users = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// Make db accessible to router
app.use(function(req,res,next){
    req.db = db;
    next();
});

app.use('/', routes);
app.use('/users', users);

我的 index.js 文件:

/* GET datatesting page */
router.get('/datatesting', function(req, res) {
    var db = req.db;
    var collection = db.get('data');
    collection.find({},{},function(e,docs){
        res.render('datatesting', {
            "datatesting" : docs
        });
    });
});

我的 datatesting.jade 文件:

extends layout

block content
  h1.
      List of Victims
      ul
          each victim, i in datatesting
              li
                  #{victim.first-name}

编辑:这是从 Mongo shell 检索到的一些示例数据。集合中只有 13 个文档。

{
    "_id": {
        "$oid": "56e5f15f0e1fc43fe589f5a9"
    },
    "first-name": "Tanisha",
    "last-name": "Anderson",
    "age": 37,
    "gender": "F",
    "killed": "Y",
    "image": "http://google.com",
    "street-address": "Ansel Road, Cleveland, Ohio",
    "city": "Cleveland",
    "state": "Ohio",
    "latitude": 41.52067,
    "longitude": -81.6222,
    "date": "11/1/2014"
}

【问题讨论】:

  • 尝试去掉find()方法中的第二个空对象参数,使其变为find({}, function(e,docs){...})
  • 刚刚从find() 方法中删除了第二个{},。同样的错误。 :(
  • 您是否在 mongo shell 中测试过查询 db.data.find()?如果是这样并且返回了一些文档,您能否编辑您的问题以包含从该 find() 查询返回的示例文档?
  • 在 mongo shell 中进行查询效果很好,我得到了我收藏中的所有文档。我刚刚添加了一个示例文档。
  • 使用方括号表示法访问您的翡翠模板中的文档属性,即代替#{victim.first-name}尝试#{victim["first-name"]}

标签: node.js mongodb express pug monk


【解决方案1】:

所以我想通了!事实证明,我需要仔细检查 .jade 文件中的缩进。

从上述教程中复制并重新粘贴示例后,我得到了这个:

extends layout

block content
    h1.
        Victims
    ul
        each user, i in datatesting
            li
              img(src= "#{user.image}")

如您所见,h1 标记不应该与ul 标记对齐。之后,它能够正确打印出我的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 2019-10-12
    • 2013-04-18
    • 2017-10-18
    • 2019-03-13
    • 2016-01-23
    • 2012-08-14
    相关资源
    最近更新 更多