首页 > 解决方案 > .forEach() 不在 EJS 中打印任何内容

问题描述

让这个.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 很陌生,有人可以指导我吗?谢谢你

标签: javascriptnode.jsexpressejs

解决方案


直到模板已经呈现之后,您的异步调用才会完成。在渲染模板之前,您需要将这些数据放在一起,例如:

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...
    });

...或类似的。


推荐阅读