Создать или обновить не возвращает обновленное значение в GORM - PullRequest
0 голосов
/ 01 апреля 2019

Вот моя модель:

type Room struct {
    PK        string `sql:"size:255;not null;"gorm:"primary_key"`
    CreatedAt time.Time
    UpdatedAt time.Time
    DeletedAt *time.Time

    LastSentMessageSeq int64
    RoomID             string `sql:"size:255;not null;"gorm:"unique_index:rooms_room_id_client_id"`
    User               User
    UserID             string `sql:"size:255;not null"`
    Client             Client
    ClientID           string `sql:"size:255;not null"gorm:"unique_index:rooms_room_id_client_id"`
}

Я использую Postgres.Я пытаюсь сделать обновление или создать операцию.Если строка существует, увеличьте поле LastSentMessageSeq или вставьте новое.Ниже приведен мой код:

var room = Room{ClientID: clientID, RoomID: roomID, UserID: usedID, LastSentMessageSeq: 10}
err := ws.db.Set("gorm:insert_option", "ON CONFLICT (room_id, client_id) DO UPDATE SET last_sent_message_seq = rooms.last_sent_message_seq + 1").Create(&room).Error
log.Println(err)
log.Println(room)

Однако, когда я печатаю объект комнаты, он не имеет обновленного значения для поля LastSentMessageSeq.Но я вижу, что он выполняет операцию upsert, то есть создает новую строку, если она не существует, или обновляет значение LastSentMessageSeq в базе данных

...