Задать вопрос
wapster92
@wapster92

Не срабатывает метод .save()?

Проблема такая, есть код
router.post('/add-file-to-play-list', async (req, res) => {
    const user = await User.findById({_id: req.body.userId})
    const music = await Music.findById({_id: req.body.audioId})
    const indexPlayList = await getIndexEl(user.playLists, 'name', req.body.namePlayList)
    const indexMainPlayList = await getIndexEl(music.files, 'name', req.body.nameAudio)
    const playList = user.playLists[indexPlayList]
    if(!playList.files) {
        playList.files = []
    }
    playList.files.push(music.files[indexMainPlayList])
    await user.save()
    res.send(JSON.stringify({
        user
    }))
})

Отсылаю запрос, в response получаю сформированный объект
{
    "user": {
        "role": 0,
        "avatar": "storage/avatars/avatar.png",
        "playLists": [
            {
                "name": "Избранные",
                "files": [
                    {
                        "name": "I'm So Sick",
                        "path": "storage/music/flyleaf/01-i'm-so-sick.m4a",
                        "likes": 0,
                        "year": 2005
                    }
                ]
            }
        ],
        "_id": "5f68bf62e85ae5056c5854d8",
        "email": "user@gmail.com",
        "login": "user",
        "password": "$2a$10$KTiyMuZnC.IYzw81VpqsN.cflWMZJA.dQXGeQhsnWJruvYRKM.00S",
        "__v": 4
    }
}

Запускал console.log(user) перед await user.save(), объект user соответсвует изменениям. Так же callback функция в методе save() отрабатывает без ошибок. Но изменений в базе данных нет. Должен добавляться массив files.
  • Вопрос задан
  • 277 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
hzzzzl
@hzzzzl
попробуй перед сохранением
user.markModified('playLists')
// или это
// user.markModified('playLists.files')


https://mongoosejs.com/docs/api/document.html#docu...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы