.forEach () ничего не печатает в EJS - PullRequest
0 голосов
/ 02 октября 2018

Имеется этот .ejs файл, который проходит через объект и извлекает некоторые данные из API.После того, как данные извлечены, это просто ничего не делает.

Я зарегистрировал результаты API, и они в порядке, но проблема в том, что он не отображает их на экране.

Вот код:

<div class="bg-white jumbotron no-shadow">
    <div class="container">
        <div class="row">
            <div class="col-md-6 col-sm-12">
                <%
                    if(apiResults.featured.male){
                        %>
                            <div class="row">
                                <%
                                Array.from(apiResults.featured.male).forEach((profile) => {
                                helper.api.getPhotoByKey(profile.photoKey)
                                    .then(photoURL => {
                                        %>
                                            <div class="col-xs-4">
                                                <img src="<%= photoURL%>">
                                            </div>
                                        <%
                                    })
                                    .catch(err => console.log(err))
                                })%>
                            </div>
                        <%
                    }
                %>  
            </div>
        </div>
    </div>
</div>

Я новичок в EJS и NodeJS, кто-нибудь может мне помочь?Спасибо

1 Ответ

0 голосов
/ 02 октября 2018

Ваши асинхронные вызовы не будут завершены до тех пор, пока шаблон не будет обработан.Вам необходимо собрать эти данные вместе до представления шаблона, например:

Promise.all(
    Array.from(apiResults.featured.male)
    .map((profile) => helper.api.getPhotoByKey(profile.photoKey))
    )
    .then(photoURLs => {
        // Add them to your data and call ejs.render...
    });

... или аналогичного.

...