【问题标题】:Jade - Trying display collection data from mongodbJade - 尝试显示来自 mongodb 的集合数据
【发布时间】:2019-10-12 09:18:33
【问题描述】:

我想显示来自 mongodb 集合的数据

我正在使用 pug 并希望在 mongodb 中显示我的数据集合

但我不知道这个错误

我试过了

这是我的 .pug 文件

extends layout

block content
    if registrations.length
        table
            tr
                th Name
                th Email
            each registration in registrations
                tr
                    td=registration.name
                    td=registration.email
    else
        p No registrations yet

这是我的 index.js 文件


const Registration = mongoose.model('Registration');
router.get('/registrations', (req, res) => {
    Registration.find()
        .then((registrations) => {
            res.render('index', { title: 'Listing registrations' });
        })
        .catch(() => { res.send('Something went wrong'); });
});

这是错误信息

TypeError: E:\web_apps_project\demo-node-app\views\index.pug:4
    2| 

    3| block content

  > 4|     if registrations.length

    5|         table

    6|             tr

    7|                 th Name


Cannot read property 'length' of undefined
    at eval (eval at wrap (E:\web_apps_project\demo-node-app\node_modules\pug-runtime\wrap.js:6:10), <anonymous>:21:19)
    at template (eval at wrap (E:\web_apps_project\demo-node-app\node_modules\pug-runtime\wrap.js:6:10), <anonymous>:79:50)
    at Object.exports.renderFile (E:\web_apps_project\demo-node-app\node_modules\pug\lib\index.js:427:38)
    at Object.exports.renderFile (E:\web_apps_project\demo-node-app\node_modules\pug\lib\index.js:417:21)
    at View.exports.__express [as engine] (E:\web_apps_project\demo-node-app\node_modules\pug\lib\index.js:464:11)
    at View.render (E:\web_apps_project\demo-node-app\node_modules\express\lib\view.js:135:8)
    at tryRender (E:\web_apps_project\demo-node-app\node_modules\express\lib\application.js:640:10)
    at Function.render (E:\web_apps_project\demo-node-app\node_modules\express\lib\application.js:592:3)
    at ServerResponse.render (E:\web_apps_project\demo-node-app\node_modules\express\lib\response.js:1012:7)
    at Registration.find.then (E:\web_apps_project\demo-node-app\routes\index.js:36:17)
    at process._tickCallback (internal/process/next_tick.js:68:7)

【问题讨论】:

    标签: arrays mongodb express mongoose pug


    【解决方案1】:

    您需要将从数据库查询返回的注册传递给模板,如下所示:

    router.get('/registrations', (req, res) => {
        Registration.find()
            .then((registrations) => {
                res.render('index', { title: 'Listing registrations', 'registrations': registrations });
            })
            .catch(() => { res.send('Something went wrong'); });
    });
    

    【讨论】:

    • hufft,非常感谢,现在我可以继续我的代码了 :)
    猜你喜欢
    • 2012-08-14
    • 2018-03-15
    • 2021-08-02
    • 1970-01-01
    • 2013-04-26
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 2011-11-23
    相关资源
    最近更新 更多