服务器接收一个带有参数的GET
请求territory_id
。nil
如果用户不需要按地区过滤,则此参数可以是,integer
如果用户只想获取特定地区的记录,则可以有一个数字。
代码:
func GetDataList (response http.ResponseWriter, request * http.Request) {
params: = GetRequestParams (request.URL.Query ())
normalID, _: = strconv.Atoi (params ["normal_id"])
territoryId, _: = strconv.Atoi (params ["territory_id"])
var listToCheck [] ObjectDataNormal
query = `select * from get_list_for_predict (year: = $1, territory_in: = $2)`
rows, err = db.Queryx (query,
2011,
territoryId)
if rows! = nil {
// code
}
// code
}
func GetRequestParams (values url.Values) map [string] string {
urlValues: = make (map [string] string, len (values))
for k, v: = range values {
urlValues [k] = v [0]
}
return urlValues
}
postgresql中的存储过程是这样设计的,如果territory_in
是ISNULL
,那么这个参数的过滤器就不起作用,否则,如果territory_in
等于5,比如territory字段的值为5的地方取记录。
以及如何在服务器端实现这一点?如果我放入territory_id = nil
邮递员,我会得到:
ERROR: invalid input syntax for integer: "nil"
如果为空,则:
ERROR: invalid input syntax for integer: "null".
也territroyID
不能相等nil
。如何根据用户请求将 null 传递给函数?
理论上我可以检查邮资功能territory_in = 0
,而不是IS NULL
。因为在将 a 转换string
为int
( strconv.Atoi (params ["territory_id"])
)territory_in
时,它将被设置为 0。但我想知道如何将 null 参数发送到 golang 中的存储函数?
我使用 sqlx 和 pgx。