服務(wù)器收到GET帶有territory_id參數(shù)的請求。nil如果用戶不需要按地區(qū)過濾,則該參數(shù)可以是,或者integer如果用戶只想獲取特定地區(qū)的記錄,則可以有一個數(shù)字。代碼: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中的存儲過程是這樣設(shè)計的,如果territory_inis ISNULL,則該參數(shù)的過濾器不起作用,否則,如果territory_inis 等于 5,例如,將記錄 Region 字段中值為 5 的記錄。以及如何在服務(wù)器端實現(xiàn)這一點?如果我輸入territory_id = nil郵遞員,我會得到:ERROR: invalid input syntax for integer: "nil"如果為空,則:ERROR: invalid input syntax for integer: "null".也territroyID不可能相等nil。如何根據(jù)用戶請求將 null 傳遞給函數(shù)?理論上我可以檢查郵資功能territory_in = 0,而不是IS NULL。因為當(dāng)將 a 轉(zhuǎn)換string為int( strconv.Atoi (params ["territory_id"]))時territory_in,它將被設(shè)置為 0。但是我想知道如何將 null 參數(shù)發(fā)送到 golang 中的存儲函數(shù)?我使用 sqlx 和 pgx。
1 回答

夢里花落0921
TA貢獻(xiàn)1772條經(jīng)驗 獲得超6個贊
如果您保存territoryId為 a*int而不是int,則可以通過nil:
func strToIntPtr(s string) *int {
i, err := strconv.Atoi(s)
if err != nil {
return nil
}
return &i
}
territoryId := strToIntPtr(params["territory_id"])
然后任何territoryId時候nil它都不是有效的int。因此,它們可以傳遞nil、null、 或any(或任何非數(shù)字的內(nèi)容),而您只需將其視為null。
- 1 回答
- 0 關(guān)注
- 181 瀏覽
添加回答
舉報
0/150
提交
取消