Как написать ответ с найденными данными - go -swagger & gorm - PullRequest
1 голос
/ 12 февраля 2020

Я использовал go -swagger и gorm для MySQL запросов, и один из моих обработчиков (получение одной записи)

api.UsersUserGetByIDHandler = users.UserGetByIDHandlerFunc(func(params users.UserGetByIDParams) middleware.Responder {
    db := dbConn()
    user := User{}
    res := db.Table("users").Where("id = ?", params.UserID).Select("id, email, password, name").Scan(&user)
    if res.RecordNotFound() {
        message := "User not exists"
        return users.NewUserGetByIDDefault(500).WithPayload(&models.Error{Message: &message})
    }
    log.Info(user) // {21 bxffcgb@emagggil.com 123456 Second}


    return users.NewUserGetByIDOK()  //How return right response there??? 
    //.WriteResponse()
})

или получение всех данных от пользователей таблицы

api.UsersUserListHandler = users.UserListHandlerFunc(func(params users.UserListParams) middleware.Responder {
        db := dbConn()
var user []User
        var count int
        db.Table("users").Select("id, email, password, name").Scan(&user).Count(&count)

        log.Info(db.RecordNotFound())
        if count == 0 {
            message := "User not exists"
            return users.NewUserGetByIDDefault(500).WithPayload(&models.Error{Message: &message})
        }

        return users.NewUserGetByIDOK()
    })

Структура пользовательского Gorm

type User struct { // user
    ID       int64  `gorm:"AUTO_INCREMENT"`
    Email    string `gorm:"type:varchar(200);unique_index"`
    Password string `gorm:"size:200"`
    Name     string `gorm:"type:varchar(200)`
}

и такая же, как модели. Пользователи

Как правильно вернуть туда данные? Я пытался с WriteResponse и WithPayload, но безуспешно

1 Ответ

0 голосов
/ 12 февраля 2020

Есть ответ:

Первое изменение

user := User{}

на

user := new(models.Users)

и добавление в конце

        ret := make([]*models.Users, 0)

        ret = append(ret, user)
        return users.NewUserGetByIDOK().WithPayload(ret)

WithPayload файл формы функций * _responses. go определяется как

// WithPayload adds the payload to the user get by Id o k response
func (o *UserGetByIDOK) WithPayload(payload []*models.Users) *UserGetByIDOK {
    o.Payload = payload
    return o
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...