go - 如何使用搜索到的数据编写响应 - go-swagger & gorm
问题描述
我使用 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)`
}
和models.Users一样
那里如何正确返回数据?我尝试使用 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
}
推荐阅读
- java - 如何编写 PCollection
>> 使用 java OutputStream 进入多个文件 - php - PHP 或 Apache/Nginx 服务器中的白名单域
- c++ - QueryFullProcessImageName 未在此范围内声明
- javascript - 有没有办法使用 selenium 从 Python 中的 Javascript 调用中获取项目列表?
- getstream-io - 用户类型 getstream-io
- azure - Azure DevOps 发布管道 - 看不到其他用户创建的自托管代理
- android - 如何在改造请求POST请求android中发送空HashMap
- glm - 如何解决安装pymol时出现glm问题?
- python - 无法删除特定行中具有 NaN 值的行
- firefox - Crostini 和 Firefox 中的标题栏