Метод .save () вставляет вместо обновления мою модель в adonis / node.js - PullRequest
0 голосов
/ 28 октября 2019

Я создаю метод для обновления в моем контроллере, следуя документации adonis , в которой говорится:

Метод сохранения сохраняет экземпляр в базе данных. Кроме того, он разумно определяет, создавать ли новую строку или обновлять существующую.

Итак, я пытаюсь так:

update ({ request, auth }){

    let user = new User()
    user.merge(request.all())
    const user = await user.save()
    return user 
}

Поэтому я делаю запрос на размещение в этомroute и я получаю эту ошибку:

сообщение: "вставить в" users "..." id "- значение дублированного ключа нарушает уникальное ограничение" users_pkey ""

Как я могу обновить модель? В запросе я передаю идентификатор, который мне нужно обновить, но Lucid считает, что это вставка ...

Ответы [ 2 ]

3 голосов
/ 28 октября 2019

Попробуйте удалить const user =, так как вы уже определили пользователя на две строки выше. Это может быть причиной нежелательной функциональности.

1 голос
/ 28 октября 2019

Исправлено с помощью:

async update ({ request, auth }){

    let user = await User.findOrFail(request.params.id)
    user.merge(request.all())
    await user.save()
    return user

}
...