下面是我的 api 处理程序。在第一次运行时,它给了我正确的输出,并且 db 中的相应调用也是正确的。
2020-07-04 14:51:04.512 IST [32129] postgres@postgres LOG: execute <unnamed>: SELECT count(*) FROM "access_owners" WHERE ("access_owners"."area" = $1)
2020-07-04 14:51:04.512 IST [32129] postgres@postgres DETAIL: parameters: $1 = '4th Floor'
2020-07-04 14:51:04.513 IST [32129] postgres@postgres LOG: execute <unnamed>: SELECT * FROM "access_owners" WHERE ("access_owners"."area" = $1) LIMIT 10 OFFSET 2
2020-07-04 14:51:04.513 IST [32129] postgres@postgres DETAIL: parameters: $1 = '4th Floor'
这是我得到的 API 响应
{
"skip": 2,
"limit": 10,
"total": 3,
"resources": [
{
"id": 26,
"name": "Test_User_5",
"email": "test_user_5@gmailcom",
"area": "4th Floor"
}
]
}
但是,如果我再次使用相同的参数调用相同的 API,则会在 DB 中再添加一个 where 条件时出错。
2020-07-04 14:51:22.560 IST [32129] postgres@postgres LOG: execute <unnamed>: SELECT count(*) FROM "access_owners" WHERE ("access_owners"."area" = $1) AND ("access_owners"."area" = $2) LIMIT 10 OFFSET 2
2020-07-04 14:51:22.560 IST [32129] postgres@postgres DETAIL: parameters: $1 = '4th Floor', $2 = '4th Floor'
这是我得到的错误
sql: no rows in result set
这是我的 API 处理程序
func GetAccessOwners(db *gorm.DB) echo.HandlerFunc {
return func(c echo.Context) error {
page := new(models.ResourcePage)
var ao = new(models.AccessOwner)
var err error
if err = c.Bind(ao); err != nil {
return err
}
var skip int
var limit int
skipParam := c.QueryParam("skip")
limitParam := c.QueryParam("limit")
if strings.TrimSpace(skipParam) != "" {
skip, err = strconv.Atoi(skipParam)
if err != nil {
return merry.Wrap(err)
}
} else {
skip = 0
}
}
MM们
相关分类