我是Go的新手,需要幫助!在 PostgreSQL 數(shù)據(jù)庫(kù)中,我有一個(gè)名為factors. 此表有 2 列(factor_id和factor_name)?,F(xiàn)在我已經(jīng)成功地從 Go 應(yīng)用程序連接到 PostgreSQL 數(shù)據(jù)庫(kù)。當(dāng)我試圖在控制臺(tái)中發(fā)出基于查詢的 GET 請(qǐng)求時(shí),我看到了錯(cuò)誤。http://localhost:8000/api/factors/?limit=5&offset=1我哪里弄錯(cuò)了?請(qǐng)幫我解決這個(gè)問(wèn)題。控制器/factors.go:package controllersimport ( "encoding/json" "fmt" "net/http" "restify/models" "restify/utils")var GetFactors = func(res http.ResponseWriter, req *http.Request) { data := models.Factors{} err := models.GetFactors(&data, req.URL.Query().Get("limit"), req.URL.Query().Get("offset")) if err != nil { fmt.Println(err.Error()) http.Error(res, err.Error(), 500) return } out, err := json.Marshal(data) if err != nil { fmt.Println(err.Error()) http.Error(res, err.Error(), 501) return } resp := make(map[string]interface{}) resp["Dictionaries"] = string(out) utils.Respond(res, resp)}
1 回答

滄海一幻覺(jué)
TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
似乎問(wèn)題是在此處分配數(shù)據(jù)庫(kù)時(shí):
DB, err := sql.Open("postgres", dbURL)
數(shù)據(jù)庫(kù)在新范圍內(nèi)定義,因此這會(huì)創(chuàng)建一個(gè)局部變量而不是設(shè)置 pkg 級(jí)變量。因此,代碼Open()
建立了與數(shù)據(jù)庫(kù)的連接。
試試這個(gè):
var err error DB, err = sql.Open("postgres", dbURL)
這是官方報(bào)價(jià):
與常規(guī)變量聲明不同,短變量聲明可以重新聲明變量,前提是它們最初是在同一塊(如果塊是函數(shù)體,則為參數(shù)列表)中較早聲明的,具有相同的類(lèi)型,并且至少有一個(gè)非空變量是新的。因此,重新聲明只能出現(xiàn)在多變量簡(jiǎn)短聲明中。重新聲明不會(huì)引入新變量;它只是為原始值分配了一個(gè)新值。
- 1 回答
- 0 關(guān)注
- 140 瀏覽
添加回答
舉報(bào)
0/150
提交
取消