2016-11-23 2 views
0

Im создает форму в ejs на основе файлов, считанных из исходной папки. Каждый файл будет генерировать несколько полей в форме. Пользователь может добавлять метаданные в каждый файл и при отправке всей формы данные должны быть сохранены в mongodb. Итак, как мне определить имена в полях, чтобы я идеально мог передать весь req.body прямо в mongodb, как в этом вопросе: Post Multiple JSON Objects Simultaneously with Express and Postman. Я попытался с параметризованными именами, как Name = «size_ <% = данные [я] .invNr%>, но тогда я должен делать много разбора для того, чтобы вернуться к отдельным объектам.как вернуть данные из динамически построенных полей формы для insertmany

<form action = "/" method = "POST"> 
    <div class="form-group"> 
     <% for (var i = 0; i < length; i++) { %> 
     <div class="row"> 
     <div class="col-md-4"><a href="<%= data[i].fullPath %>"><img src="<%= data[i].fullPath %>" width="200" class="media-object"></a></div> 

     <div class="col-md-8"><i class="fa fa-certificate"></i> 

      <span>Original: <%= data[i].origFile %></span> 
      <br> 
      <span name="katnr">KatalogNr: <%= data[i].katNr %></span> 
      <br> 
      <span name="invnr">InventarNr: <%= data[i].invNr %></span> 
      <br> 
      <span>FullP: <%= data[i].fullPath %></span> 
      <br> 
      <span>Test: <%= data[i].test %></span> 
      <br> 
      <input type = "hidden" id="invnr_<%= data[i].invNr %>" name ="invnr" value="<%= data[i].invNr %>"> 
      <input type = "hidden" id="fullpath_<%= data[i].invNr %>" name ="fullpath" value="<%= data[i].fullPath %>"> 
      <span>Comment: <%= data[i].comment %></span> 
      <br> 
      <span>Color</span> 
      <input type = "text" id="color_<%= data[i].invNr %>" name ="color" value="Viggo<%= data[i].invNr %>"> 
      <br> 
      <span> Size</span> 
      <input type = "text" id="size_<%= data[i].invNr %>" name = "size" value="Otto <%= data[i].invNr %>" > 
     </div> 
     </div> 
     <hr> 
     <% } %> 
     <input type = "submit" value = "Submit"> 
    </div> 
    </form> 

Спасибо!

ответ

0

HTML

<form action = "/" method = "POST"> 
    <div class="form-group"> 
    <% for (var i = 0; i < length; i++) { %> 
    <div class="row"> 
    <div class="col-md-4"><a href="<%= data[i].fullPath %>"><img src="<%= data[i].fullPath %>" width="200" class="media-object"></a></div> 

    <div class="col-md-8"><i class="fa fa-certificate"></i> 

     <span>Original: <%= data[i].origFile %></span> 
     <br> 
     <span name="katnr">KatalogNr: <%= data[i].katNr %></span> 
     <br> 
     <span name="invnr">InventarNr: <%= data[i].invNr %></span> 
     <br> 
     <span>FullP: <%= data[i].fullPath %></span> 
     <br> 
     <span>Test: <%= data[i].test %></span> 
     <br> 
     <input type = "hidden" id="invnr_<%= data[i].invNr %>" name ="invnr[]" value="<%= data[i].invNr %>"> 
     <input type = "hidden" id="fullpath_<%= data[i].invNr %>" name ="fullpath[]" value="<%= data[i].fullPath %>"> 
     <span>Comment: <%= data[i].comment %></span> 
     <br> 
     <span>Color</span> 
     <input type = "text" id="color_<%= data[i].invNr %>" name ="color[]" value="Viggo<%= data[i].invNr %>"> 
     <br> 
     <span> Size</span> 
     <input type = "text" id="size_<%= data[i].invNr %>" name = "size[]" value="Otto <%= data[i].invNr %>" > 
    </div> 
    </div> 
    <hr> 
    <% } %> 
    <input type = "submit" value = "Submit"> 
</div> 

Контроллер

var main = {} 
for(var i = 0;i<req.body.invnr.length;i++){ 
var obj ={ 
invnr:req.body.invnr[i], 
fullpath:req.body.fullpath[i], 
fullpath:req.body.color[i], 
fullpath:req.body.size[i] 
} 
main.push(obj); 

} 
console.log(JSON.stringify(main)) 
+0

Спасибо! Так оно и было. Незначительная деталь, которую я пропустил, - установить app.use (bodyParser.urlencoded ({extended: true})); – user2804136

Смежные вопросы