У меня несколько сложный запрос секвелизации, выполняющийся по экспресс-маршруту, и мне нужно выполнить второй запрос впоследствии, чтобы добавить необходимые данные к возвращаемому результату:
//Get inboxes based on passed params
router.get('/:data', function(req, res, next) {
let passedData = JSON.parse(req.params.data);
models.fas.findAll({
where: { current_stop: { $like: '%'+passedData.current_stop +'%'},
cert_class: { $like: '%'+passedData.cert_class +'%'},
fis_yr: { $like: '%'+passedData.fis_yr +'%'},
work_loc: { $like: '%'+passedData.work_loc +'%'},
action_cd: { $like: '%'+passedData.action_cd +'%'},
form_num: { $like: '%'+passedData.form_num +'%'},
form_id: 'HRTF' },
include: [
{ model: models.form, as: 'form' },
{ model: models.form_status, as: 'form_status' },
{ model: models.action_codes, as: 'action_codes' }
],
order: ['form_num']
}).then(function(response){
response.forEach( item ) => {
models.employees.findAll({
attributes: [ 'fname', 'mname', 'lname' ],
where: { empl_id: item.form[0].empl_id },
order: [ 'empl_id' ]
}).then(function(response){
item.readableName = response;
});
});
}).then(function(response){
res.send(response);
}).catch(function(error) {
return next(error);
});
});
Проблема I 'Здесь (с текущей настройкой) мне нужно, чтобы forEach завершил добавление данных, прежде чем я вызову res.send (response).Если я возьму последний .then () из этого кода и добавлю res.send в тот же блок, что и цикл, остальные данные будут отправлены правильно, но результаты из таблицы сотрудников не отображаются.Однако, как описано выше, на объект ответа, который я пытаюсь отправить, ничего не отправляется.
Мой вопрос двоякий
Первый:
В таблице сотрудников нет столбцов, соответствующих исходной таблице (fas).Из-за этого я понимаю, что не могу установить связь между ними (что избавит от необходимости в forEach).Это правда?
Секунда:
Если цикл является правильным способом сделать это, как я могу вернуть результаты из forEach в следующий .then иотправить его с помощью res.send ()?