Проведя более глубокое исследование и еще 3 дня, пытаясь решить эту бессмысленную проблему, я пришел к решению:
1.Проверка Mongoose может быть выполнена двумя способами ...
...
sites: [{site: {type: String}}], ... or using a new mongoose Schema
const SiteUrls = mongoose.Schema({
site: {type: String}
});
**then...**
sites: [SiteUrls]
...
2.Метод Ajax для передачи FormData с добавленным массивом должен выглядеть как в примере ниже, иначе вы столкнетесь с ошибкой проверки от Mongoose «Преобразовать в массив не удалось для значения» ...
$("#createClients").submit(function (e) {
e.preventDefault();
var formData = new FormData(this);
var siteArr = [];
$(".site").each(function() {
var siteUrl = $(this).val();
siteArr.push({'site':siteUrl});
}); //building array of sites from inputs
console.log("Sites Array", JSON.stringify(siteArr));
formData.append('sites', JSON.stringify(siteArr));// SEND the array as string otherwise it will send [object object] as the string... this should build a response like [{"url":"site.com"},{"url":"site2.co.uk"}]... follow clients.js file use JSON.parse(req.body.sites); to turn it into a parsed object like so [{url:"site.com"},{url:"site2.co.uk"}]
$.ajax({
url: "/clients/create",
type: "POST",
connection: "keep-alive",
contentType: false,
cache: false,
processData: false,
data: formData,
success: function (data) {
console.log(data);
},
error: function(err) {
console.log(err);
}
});
}); // posts new Clients
THEN !!!
3.Clients.js Router
...
sites: JSON.parse(req.body.sites), // turn it into a parsable array so data is validated by mongoose and sent to DB
...
??