Пишу приложение, в котором есть тренировки, состоящие из упражнений. Создаю такие модели:
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.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
с пк (опера, хром), все ока с оперы на смартфоне, ничего нет :(