Условный рендеринг EJS работает не так, как ожидалось

#javascript #node.js #ejs #server-side-rendering #templating-engine

#язык JavaScript #node.js #ejs #рендеринг на стороне сервера #шаблонизатор-движок

Вопрос:

Я пытаюсь реализовать этот код, но он работает не так, как ожидалось. Проблема объясняется ниже.

 lt;% if (Object.keys(notes).length !== 0) { %gt; lt;p class="card-text w-100" id="bookShelf"gt;  lt;div class="inline-block"gt;  lt;% notes.forEach(note =gt; { %gt;  lt;div class="card ml-2" style="width: 18rem;"gt;  lt;div class="card-body"gt;  lt;h5 class="card-title"gt;lt;%= note.title %gt; lt;/h5gt;  lt;p class="card-text"gt;lt;%= note.body %gt; lt;/pgt;  lt;/divgt;  lt;/divgt;  lt;% }); %gt;  lt;/divgt;  lt;/pgt; lt;% } else { %gt; lt;p class="card-text w-100" id="bookShelf" aria-placeholder="Add some notes..."gt;  You have not added any notes lt;/pgt; lt;% } %gt;   

В приведенном выше коде объект «примечания» обслуживается из серверной части и не является пустым. При рендеринге этого кода ejs я получаю вывод таким образом, что последний элемент абзаца «текст карты» по-прежнему подается на внешний интерфейс без элемента. И первый элемент абзаца «текст карточки» отображается отдельно вместо того, чтобы заключать элемент div, содержащий примечания. В идеальном случае ожидается, что он будет отображать один из элементов абзаца, но не оба.

Пожалуйста, обратитесь к прилагаемым скриншотам для лучшего понимания проблемы. Я уже потратил на это слишком много времени и все еще не мог разобраться в проблеме, если только это не ошибка какого-то типа. Любое предложение или помощь, даже самая незначительная, будут оценены по достоинству.

Проверьте оснастку инструментов веб-страница sc1 веб-страница sc2

ПРАВКА: Пожалуйста, обратите внимание, что это работает должным образом, когда объект «примечания» пуст, т. е. отображается только последний элемент абзаца.

Комментарии:

1. Является notes ли массивом?

2. Да. Это массив объектов JSON

3. вы уверены, что просматриваете этот фрагмент кода только один раз ? потому что кажется, что он находится внутри другого цикла, а в «заметках» не может быть ключей или некоторых ключей