【问题标题】:NodeJS pass Array from MongoDB to EJS fileNodeJS 将数组从 MongoDB 传递到 EJS 文件
【发布时间】:2020-05-14 06:37:28
【问题描述】:

我正在尝试为 MongoDB 中我的数组中的每个项目创建一个选项标签。我已经尝试了一些方法,但 EJS 每次都会抛出相同的错误“未定义门”..

这是我的路线中的功能:

router.post('/neueBuchung_spediteur', (req, res) => { 

        User.findOne({username: req.user}, function (err, user) {

            res.render('neueBuchung_spediteur', {

                   gate: user.gate
                });
});

这是我的 EJS 函数:

  <select id="torauswahl" name="torauswahl" style="padding:10px;font-size: large; width: 300px">
       <% for (var i = 0; i < gate.length; i++){%>
       <option value="<%=gate[i]%>"><%=gate[i]%></option>
       <%}%>
    </select>

这是我理解逻辑的完整 JS 文件:

const express = require('express');
const router = express.Router();
// Load Buchung model
const Buchung = require('../DB/models/Buchung');
const User = require('../DB/models/User');
const Tor = require(('../DB/models/Tor'));
const { ensureAuthenticated } = require('../DB/config/auth');
const passport = require('passport');

//Startseite Breuninger
router.get ('/startseite_breuninger', ensureAuthenticated, (req, res) => {

    Buchung.find(function (err, buchungen) {
        if (err)
            return res.send(err);

        res.render('startseite_breuninger',{
            vorname: req.user.vorname,
            buchungen: buchungen || []
        });
    });
});

//startseite Spedi
router.get ('/startseite_spediteur', ensureAuthenticated, (req, res) => {

    Buchung.find(function (err, buchungen) {
        if (err)
            return res.send(err);

        res.render('startseite_spediteur',{
            buchungen: buchungen || []
        });
    });
});

//Buhchungsübersicht mitarbeiter
router.get('/buchungsuebersicht', (req, res) => res.render('buchungsuebersicht'));
//Buhchungsübersicht spedi
router.get('/neueBuchung_spediteur', (req, res) => res.render('neueBuchung_spediteur'));

//torauswahl spedi
router.get ('/torauswahl', (req, res) => {

    Buchung.find(function (err, buchungen) {
        if (err)
            return res.send(err);

        res.render('torauswahl',{
            buchungen: buchungen || []
        });
    });
});

//torverwaltung mitarbeiter
router.get ('/torverwaltung', (req, res) =>{

    Tor.find(function (err, tor) {
        if (err)
            return res.send(err);
        res.render('torverwaltung',{
            tor: tor || [],
        });
    });
});
//Update Benutzerdaten Breuni
router.post('/update_detailansicht_breuninger',(req,res) =>{
    const username = req.body.username;
    const telefon = req.body.telefon;
    const email = req.body.email;
    User.update({username: username}, telefon);
    res.render('detailansicht_breuninger');

});

//insert
//insert

router.post('/neueBuchung_spediteur',ensureAuthenticated,(req, res) => {
    const {sendungsstruktur, datepicker, timepicker1, timepicker2, sendungen, EUP, EWP, pakete, bemerkung, teile } = req.body;
    var user = req.user;
    if (errors.length > 0) {
        User.findOne({ username: req.user}, function (err, user) {
            console.log(JSON.stringify(req.user));
            if (err) { throw err; }
            if (user) {
                res.render('neueBuchung_spediteur', {
                    gate: user.gate || []
                });
            }
        });
    }
        const newBuchung = new Buchung({
            sendungsstruktur,
            datepicker,
            timepicker1,
            timepicker2,
            sendungen,
            EUP,
            EWP,
            pakete,
            bemerkung,
            teile
        });
        newBuchung.save()
            .then(buchung =>{
                res.send('saved')
            })
            .catch(err=>console.log(err));
        console.log(newBuchung)

});
router.post(
    '/login',
    passport.authenticate('local', {
        failureRedirect: '/login'
    }), (req, res) => {
        if (req.user.admin == "spediteur") {
            res.redirect('/buchungen/startseite_spediteur');
        } else {
            res.redirect('/buchungen/startseite_breuninger');
        }
    });



module.exports = router;

感谢您的帮助:)

【问题讨论】:

  • 这是什么errors.length &gt; 0
  • 那是我的错。我删除了它,所以你可以忽略它

标签: javascript arrays node.js mongodb ejs


【解决方案1】:

我认为问题在于 req.user 未定义。您可以尝试在路由功能期间记录 req.user 吗?

router.post('/neueBuchung_spediteur', (req, res) => { 

        User.findOne({username: req.user}, function (err, user) {
            console.log(JSON.stringify(req.user))
            res.render('neueBuchung_spediteur', {

                   gate: user.gate
                });
});

【讨论】:

  • 我发现,IntelliJ 说,req.user 是一个未解析的变量。你知道为什么吗?
  • 用户在哪里被提供?它在 POST 正文中吗?
  • 所以用户必须登录才能看到该页面。在他登录后,他可以访问该页面,因此我有 req.user 变量
  • 你能把完整的JS文件贴出来吗?
猜你喜欢
  • 2018-03-20
  • 2013-05-06
  • 2016-11-05
  • 2019-05-27
  • 2018-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多