首页 > 解决方案 > 使用 Pug 打印数据库 Mongoose 中的所有项目

问题描述

更新

我想打印我创建的数据库 reizen(在 Mongoose 中)中的所有项目。它从不打印它总是打印的项目立即打印'Geen reizen'。我已经找了很长时间了,我不知道如何解决它。我的代码是:

var router = express.Router();
const mongoose = require('mongoose');
const { body, validationResult } = require('express-validator/check');

/* GET reizen*/
router.get('/', function(req, res, next) {
  if (req.cookies.username != '') {
    res.render('reizen', { sisu : req.cookies.username });
  }
  else {
    res.render('reizen', { sisu : 'SIGN IN/SIGN UP'});
  }
});

router.get('/getreizen', function(req, res, next) {
  reizen.find({}, function(err, reizen) {
    res.render('reizen', {reizen: reizen});
  });
}); 

我仍在处理关于 cookie 的第一部分,因此您可以忽略该部分。

我在哈巴狗的代码是:

extends layout

block content
    #reizen.w3-content.w3-container.w3-padding-64
        h3.w3-center REIZEN
        a.w3-bar-item.border-button(href='/reistoevoegen') 
            |   VOEG REIS TOE
        p
            |
            |
        p
            each val in reizen
                a Titel: #{val.titel}
            else
                li Geen reizen.

我正在使用each val in reizen ? reizen: [],否则我会收到错误“无法从未定义中获取属性长度”。

有人可以告诉我有什么问题吗?

标签: javascriptnode.jsdatabasemongoose

解决方案


您的方法签名错误,您正在使用:

reizen.find({}, function(reizen) {
    res.render('reizen', {reizen: reizen});
  });

但是回调有签名 function(err, reizen)

因此,您尝试err在模板中打印未定义的错误 ( )。


更新:

下一个测试是从等式中排除 db。更新代码并再次运行。

const data = [
   { titel: "A" },
   { titel: "B" },
]
res.render('reizen', {reizen: data});

推荐阅读