Я вижу несколько проблем с вашим кодом. Переменная data
, полученная из функции обратного вызова, и data
в adminArray.forEach(function (data)
- это два разных значения. Первый должен быть массивом, который вы присвоили adminArray
, а второй - объект, в котором вы пытаетесь получить доступ к свойству email
. Это может быть причиной возникшей проблемы.
В результате этого строка User.findOneAndUpdate({email: data.email}, {truckDriver: true});
не будет работать, поскольку существует вероятность того, что значение email
будет неопределенным, и в этом случае findOneAndUpdate
будет вызываться с { email: undefined }
.
Кстати, await
в этой строке await User.find({ isVerified: true }, function (err, data) {...});
не нужен, потому что вы имеете дело с функцией обратного вызова.
I немного изменил код, см. ниже:
router.post('/admin', ensureAuthenticated, async (req, res) => {
try {
const { truckDriver, truckNumber, admin, customer, loadPlanning } = req.body;
const adminArray = await User.find({ isVerified: true });
if (!adminArray) {
return;
}
for (var key in req.body) {
if (req.body.hasOwnProperty(key)) {
adminArray.forEach(function (data) {
if (truckDriver == data.email) {
console.log(truckDriver);
User.findOneAndUpdate({ email: data.email }, { truckDriver: true });
}
if (truckNumber == data.email) {
console.log(truckNumber);
User.findOneAndUpdate({ email: data.email }, { truckNumber: truckNumber });
}
if (admin == data.email) {
console.log(admin);
User.findOneAndUpdate({ email: data.email }, { admin: true });
}
if (customer == data.email) {
console.log(customer);
User.findOneAndUpdate({ email: data.email }, { customer: true });
}
if (loadPlanning == data.email) {
console.log(loadPlanning);
User.findOneAndUpdate({ email: data.email }, { loadPlanning: true });
}
});
}
}
req.flash('success_msg', 'Your accounts have been processed!');
res.redirect('/admin');
}
catch (e) {
res.send('error_msg');
console.log(e);
};
});
Дайте мне знать, если это работает, в случае, если вы видите ошибку, также дайте мне знать об ошибке. Приветствия.