簡體   English   中英

NodeJS 將數組從 MongoDB 傳遞到 EJS 文件

[英]NodeJS pass Array from MongoDB to EJS file

我正在嘗試為 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;

我感謝任何幫助:)

我認為問題在於 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
                });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM