首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用搜索到的数据编写响应- go-swagger & gorm

如何使用搜索到的数据编写响应- go-swagger & gorm
EN

Stack Overflow用户
提问于 2020-02-12 23:39:23
回答 1查看 154关注 0票数 1

我使用go-swagger和gorm进行MySQL查询,我的一个处理程序是(检索一条记录)

代码语言:javascript
复制
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()
})

或从表用户中检索所有数据

代码语言:javascript
复制
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结构是

代码语言:javascript
复制
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)`
}

与models.Users相同

如何正确地返回那里的数据?我尝试了WriteResponse和WithPayload,但没有成功

EN

回答 1

Stack Overflow用户

发布于 2020-02-13 00:17:03

答案是:

第一个变化

代码语言:javascript
复制
user := User{}

代码语言:javascript
复制
user := new(models.Users)

并在末尾添加

代码语言:javascript
复制
        ret := make([]*models.Users, 0)

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

表单文件*_responses.go的WithPayload函数定义为

代码语言:javascript
复制
// 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
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60191945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档