Могу ли я предложить другой подход? Поскольку вы используете ответ с 2014 года ...
let form = new FormData();
form.append('fieldName', 'fileBuffer/DataString', 'fileName');
axios.post('url', form, {
headers: {
'Content-Type': `multipart/form-data; boundary=${form._boundary}`
}
}).then((res) => {
console.log(res.data);
res.json(responseFromServer.data);
}).catch((err) => {
res.status(400).send(err);
});
Конечно. Можно передать набор результатов непосредственно TT и выполнить итерации по нему в шаблоне.
$c->stash->{cards} = $rs;
... и затем:
[% WHILE (card = cards.next) %]
[% card.given_name %] [% card.family_name %]
[% END %]
Или, что еще лучше:
$c->stash(cards => $rs);
... в шаблоне TT:
[% FOREACH card = cards %]
[% card.given_name %] [% card.family_name %]
[% END %]
Я делаю:
@{$c->stash->{cards}} = $rs->all;
В шаблоне:
[% FOREACH card IN cards %]
[% card.given_name %] [% card.family_name %]
[% END %]
Я делал то же самое, что и автор.
Пытаясь создать более строгий подход MVC, я сейчас обрабатываю объекты DBIC в контроллере и передаю очень простой тайник для отображения в шаблоне. (Ключевым преимуществом является то, что код можно повторно использовать другими сценариями, а не только веб-интерфейсом.)
Мне любопытно, знает ли кто-нибудь, эффективнее ли это с точки зрения обработки или памяти. Я думаю, что первый метод приводит к меньшему времени обработки, но дольше сохраняет память. Я предполагаю, что мой новый подход требует немного больше обработки и временно немного больше памяти, но потенциально большой объект набора результатов не живет так долго.