У меня есть данные, которые поступают из базы данных, которые я фильтрую и группирую элемент на основе поля категории, а затем отображаю элементы с соответствующей категорией, и вот код, который я получил Я использую EJS как шаблонизатор :
<%
var catDocs = docs.reduce((acc, x) => {
acc[x.datas.category] = [...(acc[x.datas.category] || []), x];
return acc;
}, {});
Object.entries(catDocs).map(function ([cat, items]){ %>
<h4 class="category"><%=ucfirst(cat)%></h4>
<div class="row">
<%
items.filter(function(item) {
if (!datas.loggedIn && item.datas.status !== 'published') {
return false; // skip
}
return true;
}).map(function (item) {%>
<h5><%= item.datas.status %></h5>
<% });
}); %>
А вот исходные данные до reduce
:
Теперь я застрял в ошибке, в некоторых категориях нет ни одного опубликованного элемента, и заголовок все еще отображается, потому что я показываю заголовок, прежде чем использовать функцию filter
, где я пропускаю каждый элемент, который не был опубликован, пока пользователь не авторизован.
Если кто-то может помочь скрыть заголовок, если нет элемента для показа (другими словами, если if there's not any pushblished item and there's is not logged in don't display the corresponding title
)
Большое спасибо всем за помощь.
С наилучшими пожеланиями