简体   繁体   中英

NodeJS pass Array from MongoDB to EJS file

i'm trying to make an option tag for every item which is in my Array in MongoDB. I have tried some ways but EJS throws me everytime the same error "gate is not defined"..

Here is my function in my route:

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

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

            res.render('neueBuchung_spediteur', {

                   gate: user.gate
                });
});

And this is my EJS function:

  <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>

thats my full JS file for understanding the logic:

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;

Im thankful for any help :)

I think the issue is that req.user is undefined. Can you try logging req.user during your route function?

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
                });
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM