Я делаю список библиографических записей, используя форму, добавляющую значения в mongoose.model, но некоторые записи должны иметь нескольких авторов.
Чтобы добавить автора, я добавил js-скрипт, назначенный кнопке для добавления входных данных для имени и имени автора, но когда я отправляю форму вместо создания нескольких объектов автора в массиве объектов, определенных в схеме, он просто помещает все значения имени и второго имени в один и тот же объект.
Как можно различать разных авторов при использовании одних и тех же входных данных для добавления нескольких авторских объектов в массив авторов?
Это схема:
const BiblibliographySchema = new mongoose.Schema({
author: [{
firstName: "String",
secondName: "String"
}],
title: "String",
publishInfo: {
publisher: "String",
location: "String"
},
date: "Number"
});
module.exports = mongoose.model("Bibliography", BiblibliographySchema);
Это форма:
<form class="bibliography-form" action="/workspace/bibliography" method="POST">
<div id="add-input">
<input type="text" name="bibliography[author][firstName]"
placeholder="First Name">
<input type="text" name="bibliography[author][secondName]"
placeholder="Second Name">
<button id="add-name" type="button">+</button>
<br>
</div>
</form>
Это js-скрипт, который добавляет поля ввода:
var button = document.getElementById("add-name");
button.addEventListener("click", function(){
var br = document.createElement('br');
document.getElementById("add-input").appendChild(br);
var input1 = document.createElement('input');
var input2 = document.createElement('input');
input1.setAttribute('type', 'text');
input1.setAttribute('name', 'bibliography[author][firstName]');
input1.setAttribute('placeholder', 'First Name');
input2.setAttribute('type', 'text');
input2.setAttribute('name', 'bibliography[author][secondName]');
input2.setAttribute('placeholder', 'Second Name');
document.getElementById("add-input").appendChild(input1);
document.getElementById("add-input").appendChild(input2);
document.getElementById("add-input").appendChild(br);
});
И это маршрут создания:
app.post('/workspace/bibliography', function(req, res){
Bibliography.create(req.body.bibliography, function(err, newEntry){
if (err) {
console.log(err);
} else {
res.redirect('/workspace/bibliography');
}
});
});
Это его библиографическая запись отображается на странице:
<div>
<% bibliography.forEach(function(entry){ %>
<form action="/workspace/bibliography/<%=entry._id%>?
_method=DELETE" method="POST">
<p>
<%= entry.author.secondName %>, <%= entry.author.firstName %>.
<i><%= entry.title %>. <%= entry.publishInfo.publisher %></i>,
<%= entry.publishInfo.location%>, <%= entry.date %>.
<button class="delete-bibliography-entry">x</button>
</p>
</form>
<% }); %>
</div>
Я бы хотел, чтобы результат выглядел так:
- secondName, firstName. secondName, firstName
но сейчас это выглядит так:
- secondName, secondName. firstName, firstName
спасибо за любую помощь !!!