我使用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,但没有成功
发布于 2020-02-13 00:17:03
答案是:
第一个变化
user := User{}至
user := new(models.Users)并在末尾添加
ret := make([]*models.Users, 0)
ret = append(ret, user)
return users.NewUserGetByIDOK().WithPayload(ret)表单文件*_responses.go的WithPayload函数定义为
// 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
}https://stackoverflow.com/questions/60191945
复制相似问题