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

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

Итак, я пробую так:

update ({ request, auth }){

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

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

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

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

0
bla 28 Окт 2019 в 19:50

2 ответа

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

3
Brad Kellogg 28 Окт 2019 в 20:03
Та же проблема, я исправил, используя let user = await User.findOrFail (request.params.id)
 – 
bla
28 Окт 2019 в 20:08

Исправлено с использованием:

async update ({ request, auth }){

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

}
1
bla 28 Окт 2019 в 20:16