Предположим, у вас есть ваши данные в request body
.
req.body.details
будет выглядеть так:
details: [
{size: "M", total: 5, color: "red"},
{size: "S", total: 2, color: "black"}
]
Затем вы можете просто сохранить его так:
detail: req.body.details
Обратите внимание, что ваша схема для деталей немного странна:
detail:[{
size:{}, // seems to be a string not an object
color:{}, // seems to be a string not an object
total:{} // seems to be a number not an object
}]
Вместо этого, я думаю, вы могли бы сделать:
detail:[{
size:{type: String},
color:{type: String},
total:{type: Number}
}]
Изменить:
Поскольку вы, похоже, не проверяете детали, вы можете просто сделать его массивом в своей схеме (это зависит от вас и что лучше всего работает).
detail: { type: Array }
Обычно req.body.details
может приходить откуда бы вы ни сделали запрос. Он может быть отсортирован и равен массиву, который вы хотите сохранить в базе данных.
Я не полностью знаю, что находится в вашем req.body.size
, например, но если это массив, такой как ["M","S"]
, вы должны извлечь каждый элемент и создать отдельные объекты, которые затем вы sh в массив которые вы сохраните в своей базе данных.
Посмотрите ниже:
let size = ["M","S"]
let total = [5,2]
let color = ["red", "black"]
let detailsToDb = []
for (let i=0; i<size.length; i++) {
detailsToDb.push({
size: size[i],
color: color[i],
total: total[i]
})
}
console.log(detailsToDb)
В вашем случае вы можете использовать req.body.size[i]
et c. сразу, не нужно инициализировать переменные.
let detailsToDb = []
for (let i=0; i<req.body.size.length; i++) {
detailsToDb.push({
size: req.body.size[i],
color: req.body.color[i],
total: req.body.total[i]
})
}