Итак, у меня есть этот код
//Admin Panel Page
router.get('/admin', ensureAuthenticated, async (req, res) => {
if (req.user.admin !== true){
req.flash('error_msg', 'You do not have access to reports, sorry.');
res.render('dashboard', {
name: req.user.name
})
}
else{
try {
var adminArray = [];
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'>Chinook Winds Logistics LLC</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'><table class='table-primary table-bordered table' style='border-spacing: 10px;'>"+
"<tr><th>Users Name</th><th>Email Address</th><th>Truck Driver</th><th>Truck Number</th><th>Admin</th><th>Customer</th><th>Load Planner</th><th>Deactivate Account?</th></tr><tr><form action='/admin' method='post'>";
await User.find({isVerified: true}, function(err,resp){
if(err){
console.log('Error Fetching Model');
console.log(err);
}
adminArray = resp;
adminArray.forEach(function(data){
html += "<td>" + data.name + "</td>";
html += "<td>" + data.email + "</td>";
html += "<td><input type='hidden' name=truckDriver value=''><input class='form-control' name='truckDriver' type='checkbox' value=" + data.email + "></input></td>";
html += "<td><input class='form-control' name='truckNumber' type='number'></input></td>";
html += "<td><input type='hidden' name=admin value=''><input class='form-control' name='admin' type='checkbox' value=" + data.email + "></input></td>";
html += "<td><input type='hidden' name=customer value=''><input class='form-control' name='customer' type='checkbox' value=" + data.email + "></input></td>";
html += "<td><input type='hidden' name=loadPlanning value=''><input class='form-control' name='loadPlanning' type='checkbox' value=" + data.email + "></input></td>";
//html += "<td><input class='form-control' name='deactivate' type='checkbox' value=" + data.email + "></input></td>";
html += "</tr><tr>";
});
html += "</tr></table><input class='btn btn-primary' type='submit'></input></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);
}
}
});
Это создает таблицу всех проверенных пользователей. Это ...
// Admin Update Panel
router.post('/admin', ensureAuthenticated, async (req, res) => {
try {
const { truckDriver, truckNumber, admin, customer, loadPlanning } = req.body;
await User.find({isVerified: true}, function(err,data){
adminArray = data;
console.log(req.body);
q = 1;
adminArray.forEach(async (data, res) =>{
if(truckDriver[q] == data.email){
await User.findOneAndUpdate({email: data.email}, {truckDriver: true}, {useFindAndModify: false});
}
if(admin[q] == data.email){
await User.findOneAndUpdate({email: data.email}, {admin: true}, {useFindAndModify: false});
}
if(customer[q] == data.email){
await User.findOneAndUpdate({email: data.email}, {customer: true}, {useFindAndModify: false});
}
if(loadPlanning[q] == data.email){
console.log(yes);
await User.findOneAndUpdate({email: data.email}, {loadPlanning: true}, {useFindAndModify: false});
}
q = q + 2;
console.log(q);
});
});
req.flash('success_msg', 'Your accounts have been processed!');
res.redirect('/admin');
}
catch (e){
res.send('error_msg');
console.log(e);
};
});
Предполагается перебирать отправленную форму и обновлять учетные записи пользователей на основе данных предыдущей формы.
Я пытаюсь сделать так, чтобы если флажок был если флажок не установлен, форма все равно будет передавать значение на свое место (может быть нулевым). Я попытался использовать скрытые поля для выполнения sh, но когда я нажму на кнопку отправить, форма опубликует все скрытые и все отмеченные флажки.
Как я могу сделать так, чтобы все непроверенные флажки прошли переменная null для POST, или продолжайте делать это так, как я, и удалите значения скрытых флажков, если установлен соответствующий флажок?