Я изучал множество других подобных вопросов, но, похоже, не могу понять суть этого, хотя я убежден, что это что-то очень простое. У меня есть поле выбора (с помощью плагина Chosen), которое позволяет пользователям выбирать несколько вариантов в этом поле (продвижение организаций). Поле определяется как массив, и если пользователь выбирает только один вариант, он работает нормально. Тем не менее, если они выбирают несколько, при отправке формы, я получаю эту ошибку:
Ошибка проверки события: содействие организации: сбой приведения к массиву для значения "5db5a27114e1e9001776cc7a, 5db51940b261d5001791f9aa, 5d1626445afea80fb3bb8b8b8b3bbbbbb5"*
Поле, определенное как массив в схеме event.js (со ссылкой на схему Help.js):
{
type: mongoose.Schema.Types.ObjectId,
ref: "Help"
}
],
Как поле определяется в newEvent.ejs:
<label class="profile-label" for="venue">Event Organisers - Organisations:</label>
<select class="mselect standard-input" name="event[promotingOrganisations][]" id="promoting-organisations" data-placeholder='Select multiple (if required) or leave blank' multiple>
<% promotingOrganisations.forEach(organisation => { %>
<option value="<%= organisation.id %>"><%= organisation.name %> <span class="display-category">(<%= organisation.category %>)</span>
</option>
<% }); %>
</select>
</div>
В контроллере EventCreate:
let event = await Event.create(req.body.event);
Может кто-нибудь посоветовать, где я иду не так и почему он не позволяет сохранять несколько элементов в массиве?
Обновить:
После дальнейшего расследования я фактически установил причину проблемы;Я также использую экспресс-sanitizer в маршруте, как это:
middleware.sanitizeFields(req, req.body.event);
, который определяется в файле промежуточного программного обеспечения следующим образом:
sanitizeFields: (req, obj) => {
for(const prop in obj) {
obj[prop] = req.sanitize(obj[prop]);
}
return obj;
}
Если я удаляю sanitizer из контроллера, массивсохраняет правильно. Итак, чтобы изменить мой первоначальный вопрос, кто-нибудь может посоветовать, как необходимо адаптировать код промежуточного программного обеспечения для захвата массивов? Спасибо