'can I use partials in a for loop in ejs?

I'm trying to include partials in a for loop in EJS.

 <% let index = 1 %>
    <% for (let item in db) { %>

    <div class="box unfocused box_<%=index  %> ">
     <% if (db[item].type === "video") { %>
      <%- include ('partials/_video.ejs') %> 

    <% } else if (db[item].type === "collection") { %>   
      <%- include ('partials/_collection.ejs') %> 


    <% } else if (db[item].type === "box") { %>   
      <%- include ('partials/_box.ejs') %> 
     
      <% } %>

    </div>

    <% index ++ %>


    <% } %>

For some reason, the variables defined in the for loop are not being passed down into the partial. For example, _video.ejs looks like this:

      <video muted=true autoplay=true loop=true width="250">

        <source src="<%=db[item].src%>" type="video/mp4">
      </video>

When I run the code, the browser tells me that item is not defined in _video.ejs (item is defined in the for loop).

How to pass item down into the partial?



Solution 1:[1]

<%for(let post of posts){%> 
    <%-include('_post',{post: post}); %>
<%}%>

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Rajesh Behera