Java передает ссылки по значению.
Таким образом, вы не можете изменить ссылку, которая будет передана.
Вместо:
.then(sender => {
sendersArray.push(sender);
})
Попробуйте:
.then(sender => {
sendersArray.push(sender);
if (sendersArray.length == transactions.length)
res.send(sendersArray);
})
и удалите res.send(sendersArray);
в конце.
Promise.all
должно работать примерно так:
.then(transactions =>
Promise.all(
transactions.map(({ id_recipient }) => { return new Promise( (resolve, reject) => {
User.findAll({
where: {
id: id_recipient,
},
attributes: ['name', 'surname'],
include: [
{
model: Transaction,
where: { id_sender: db.Sequelize.col('user.id') },
attributes: [
'amount_money',
'date_time',
'transfer_title',
'id_recipient',
'id_sender',
],
},
],
})
.then(sender => {
resolve(JSON.stringify(sender)); // <- this is string, i need this to send res
})
.catch(err => {
reject(err);
}),
})}),
),
)
.then((results) => {
res.send(results);
});