Всем привет. Пишу приложение, в котором есть тренировки, состоящие из упражнений. Создаю такие модели:
const valuesOfExercise = new Schema({
exercise: {type: Schema.Types.ObjectId, ref: "Exercise"},
repeats: {type: Number, required: true},
measure: {type: Number, required: true},
order: {type: Number}
})
const workoutSchema = new Schema({
user: { type: Schema.Types.ObjectId, ref: "User" },
date: {type: Date},
exercises: [valuesOfExercise]
})
На фронте есть возможность удалить упражнение из тренировки либо переставить местами упражнения.
Соответственно за порядок выполнения упражнений отвечает значение order, по которому сортируются упражнения. После удаления каждого упражнения образуется дыра, которую нужно закрыть. С фронта приходит обьект, который подлежит удалению. Код выглядит так:
const {itemToDelete} = req.body
Workout.find({user: req.payload._id}).populate({path: 'exercises.exercise'})
.exec((err, item)=>{
item.map((ex, i)=>{
let arr = [...ex.exercises]
arr.splice(itemToDelete.order, 1)
arr.map((ex, index)=>{
ex.order = index;
})
console.log(arr)
})
})
Ничего другого пока не придумал. Массив новый с нужными значениями, с этим все ок. А вот как изменить значения order в базе данных - не имею представления, собственно в этом и заключается вопрос.
Буду рад любым полезным замечаниям, так как в бэке я новичок и, по сути, это мой первый более-менее серьезный опыт работы с mongoose.