Как изменить свойство модели на которую ссылаешься?

146
11 апреля 2019, 12:30

Пишу приложение, в котором есть тренировки, состоящие из упражнений. Создаю такие модели:

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.

READ ALSO
Как копировать файлы в gulp?

Как копировать файлы в gulp?

Имеется вот такая файловая структура:

114
издать звук на смартфоне (опера)

издать звук на смартфоне (опера)

с пк (опера, хром), все ока с оперы на смартфоне, ничего нет :(

204
Как реализовать кратность?

Как реализовать кратность?

Подскажите, как именно можно реализовать кратность?

138