Вызов флажков с именем в массиве - PullRequest
0 голосов
/ 23 января 2020

У меня есть этот код:

router.post('/expenseReport', ensureAuthenticated, async (req, res) => {
    try {
        const{ startDate, endDate } = req.body;
        var expenseArray = [];
        var count = 0;
        var html = "<link rel='stylesheet' href='/css/freelancer.css' type='text/css'/>" +
                    "<script src='https://code.jquery.com/jquery-3.4.1.slim.min.js' integrity='sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n' crossorigin='anonymous'></script>" +
                    "<nav class='navbar navbar-expand-lg bg-secondary text-uppercase fixed-top' id='mainNav'><div class='container'>" +
                    "<a class='navbar-brand js-scroll-trigger' href='/dashboard'>The Traveling Coder</a>" +
                    "<button class='navbar-toggler navbar-toggler-right text-uppercase font-weight-bold bg-primary text-white rounded' type='button' data-toggle='collapse' data-target='#navbarResponsive' aria-controls='navbarResponsive' aria-expanded='false' aria-label='Toggle navigation'>Menu<i class='fas fa-bars'></i></button>" +
                    "<div class='collapse navbar-collapse' id='navbarResponsive'><ul class='navbar-nav ml-auto'><li class='nav-item mx-0 mx-lg-1'><a href='/admin' class='btn btn-primary'>Admin Panel</a></li><li class='nav-item mx-0 mx-lg-1'>" +
                    "<a href='/reports' class='btn btn-primary'>Reports</a></li><li class='nav-item mx-0 mx-lg-1'><a href='/users/logout' class='btn btn-primary'>Logout</a>" +
                    "</li></ul></div></div></nav>< br/><body><script src='https://kit.fontawesome.com/4a2ea255d5.js' crossorigin='anonymous'></script><div class='container-blog'><div class='container'><table class='table-primary table-bordered table' style='border-spacing: 10px;'>"+
                    "<tr><th>Reimburse?</th><th>Employee Name</th><th>Amount to be Reimbursed</th></tr><tr><form action='/expenseSubmit' method='post'>";
        await Expense.find({reimbursed: false}, function(err,data){
            if(err){
                console.log('Error Fetching Model');
                console.log(err);
            }
            expenseArray = data;
            expenseArray.forEach(function(data){
                console.log(data);
                count = count+1;
                html += "<td><input class='form-control' name=" + data._id + " type='checkbox' value='checked'></input></td>";
                html += "<td>" + data.user + "</td>";
                html += "<td> $" + data.amount + "</td>";
                html += "</tr><tr>";
                console.log(data._id);
            });
            html += "</tr></table><button class='btn btn-primary' type='submit'>Submit</button></form></div></body>";
            html += "<script src='js/freelancer.js'></script>";
            html += '<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script><script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script><script src="public/js/freelancer.js"></script><script src="public/js/jqBootstrapValidation.js"></script><script src="public/js/contact_me.js"></script>';
            res.send(html);
        })
    }
    catch (e){
        res.send('error_msg');
        console.log(e);
    }
});

После этого он создал таблицу всех документов в базе данных, которые еще не были возмещены. Я хочу позволить пользователю установить флажки для возмещений, которые он хочет отправить. После того, как пользователь установил флажки и нажал кнопку «Отправить», я пытаюсь использовать foreach l oop для циклического переключения между флажками и выяснения, какие документы необходимо обновить.

//Expense Payout Backend
router.post('/expenseSubmit', ensureAuthenticated, async (req, res) => {
    try {
        await Expense.find({reimbursed: false}, function(err,data){
            if(err){
                console.log('Error Fetching Model');
                console.log(err);
            }
            expenseArray = data;
            expenseArray.forEach(function(data){

                if(data._id === 'checked'){
                    console.log('it worked');
                }
                else{
                    console.log("didn't work");
                }
            })
        })
    }
    catch (e){
        res.send('error_msg');
        console.log(e);
    };
});

Это то, что у меня есть для второй страницы. Если я пытаюсь использовать req.body, он дает неопределенный. Есть ли более простой способ сделать это? Куда я иду не так?

Заранее спасибо: D

1 Ответ

1 голос
/ 23 января 2020

Если ваш req.body не определен, убедитесь, что вы уже используете body-parser.

?‍? Например: Вы можете использовать Middleware в вашем express приложении

app.use(express.json());
app.use(express.urlencoded({extended: true}));

? После добавления этого промежуточного программного обеспечения теперь вы можете повторить попытку и увидеть, что ваш req.body не является неопределенным.

Для примера Вы можете увидеть по этой ссылке: https://codesandbox.io/s/brave-noether-j6xgv

Надеюсь, это поможет вам ?.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...