Если я правильно понял, проблема в том, что вы пытаетесь поместить несколько входов с одинаковым именем в одну форму в <input type="radio" name="proxyTitle" value="{{title}}"/>
, что дает вам что-то вроде
<input type="radio" name="proxyTitle" value="Title 1"/>
<input type="radio" name="proxyTitle" value="Title 2"/>
<input type="radio" name="proxyTitle" value="Title 3"/>
Какобъяснил здесь , браузеры будут жевать его, но обработка на стороне сервера может потребовать некоторых корректировок.
В вашем случае проще всего было бы добавить индекс к именам параметров.Итак, ваша форма будет выглядеть следующим образом:
{{#each proxyObj}}
<p>
<label>
<input type="radio" name="proxies[{{@key}}]" value="{{this}}"/>
<span>{{this}}</span>
</label>
</p>
{{/each}}
(обратите внимание, что если proxyObj
является массивом, вам придется использовать @index
вместо @key
; также, в зависимости от proxyObj
структура полей, вам, возможно, придется использовать this.title
в качестве значений для отображения и т.п.).
Что касается обработки на стороне сервера, вам придется циклически проходить через proxies
, который вы получаетеи обрабатывать их один за другим, например
router.post("/proxies/:id", ensureAuthenticated, (req, res) => {
Project.findOne({
_id: req.params.id
}).then(project => {
project.proxies = []; // this is only in case you wanna remove the old ones first
const proxies = req.body.proxies;
for(let i = 0; i < proxies.length; i++) {
// Add to proxy array on the Project object in the collection
project.proxies.push({ proxyTitle: proxies[i].title });
}
project.save().then(project => {
res.redirect(`/projects/stakeholders/${project.id}`);
});
});
});