отображение массива на HTML-странице с помощью Ejs

#javascript #node.js #mongodb #ejs #display

#javascript #node.js #mongodb #ejs #отображение

Вопрос:

Я создаю небольшой форум для своего веб-сайта с помощью Ejs / NodeJS / MongoDB, когда пользователь публикует объект create (title: , comment : , reply: [] , мне нужен массив для ответа, потому что их несколько, мне удалось отобразить мои заголовки в разных элементах Html, комментарийтоже, но когда я пытаюсь отобразить ответ, который отображает весь ответ в одном «

«… это мой код :

         <div  class="vosQuestions" id="vosQuestions" >
            <% for(var i = 0; i < collectionName.length; i  ) {%>
                
            <div class="result">
                <span id="titreResultat" class="titreResultat"><%=collectionName[i].title%></span>
                
                <div id="commentQuestions" class="commentOff">
                    
                        
                        <p class="comment"><%=collectionName[i].commentaire%></p> 
                       
                    <div class="trait"></div>
                    
                    
                    <p class="repArray"><%=collectionName[i].reponse%></p>
                    <p id="rep2">
                       
            
                    <div id="test" class="reprep">
                        <input  id="repBtn" class="repondre" type="button" value="repondre">
                    </div>
                    
                    
                </div>
               
            </div>
            
            
            <%} %>
  

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

1. <p class="repArray"><%=collectionName[i].reponse%></p> где вы хотите отобразить ответ?

2. правильно, я хочу создать элемент «<p>» для каждого ответа

3. Вам нужен 2-й внутренний цикл, который повторяется collectionName[i].reponse точно так же, как вы уже повторяете collectionName .

4. хорошо, но я не могу сделать <% для(var i = 0; i < collectionName.reponse . длина; i ) {%>..

Ответ №1:

как вы ответили в комментариях к вашему вопросу, <p class="repArray"><%=collectionName[i].reponse%></p> это то место, где вы хотите отобразить ответ.

причина, по которой он отображает весь ответ за один раз (вероятно, в формате JSON), заключается в том, что reply или response является массивом. чтобы обернуть каждый «ответ» или response внутри <p> элемента, вам нужно выполнить итерацию или цикл по каждому из них.

используйте приведенный ниже код в качестве ссылки.

 for (let i = 0; i < replies.length; i  )
{
    <p class="repArray"><%= replies[i] %></p>
}
  

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

1. спасибо за ваш ответ, но на самом деле это невозможно, потому что мне нужно отобразить собственный ответ субъекта, для отображения коллекции с помощью узла мой код таков: app.get(«/ vosQuestions»,async (req,res)=>{ try{ const db = client.db(‘dedDB’); db.collection(‘POST’).find().toArray(функция(ошибка, результат){ if (ошибка) { return console.log(ошибка) } res.render(«vosQuestions»,{collectionName: результат }) })

2. перебирая массив collectionName[i].response , вы можете отображать эти ответы один за другим

3. ха-ха, что я пытаюсь сделать.. но я не могу сделать: <% for(var i = 0; i < collectionName.reponse . длина; i ) {%> как я могу это сделать?

4. что вы collectionName[0].response возвращаете?

5. ответный массив из первого объекта