go - 如何使用搜索到的数据编写响应-Goswagger和Gorm

标签 go struct go-gorm go-swagger

我将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,但未成功

最佳答案

有一个答案:

第一次改变

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
}

关于go - 如何使用搜索到的数据编写响应-Goswagger和Gorm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60191945/

相关文章:

go - 在 CLI REPL 中添加导航键(箭头键)支持

GO lang 语法错误 : unexpected name, 期待)

c - 使用指向结构的指针数组期间出现段错误

go - 保存父项时自动删除子记录

go - SELECT WHERE with updated_at 是错误的

Golang `go get` - 找不到任何包

依赖轮询器一直运行的Go应用,保证其稳定性的建议

c# - 从 WM_COPYDATA 消息编码结构

c - 理解 C 语言的文件解析器

postgresql - Gorm 和关系