我是Go的新手,需要帮助!在 PostgreSQL 数据库中,我有一个名为factors. 此表有 2 列(factor_id和factor_name)。现在我已经成功地从 Go 应用程序连接到 PostgreSQL 数据库。当我试图在控制台中发出基于查询的 GET 请求时,我看到了错误。http://localhost:8000/api/factors/?limit=5&offset=1我哪里弄错了?请帮我解决这个问题。控制器/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 回答
沧海一幻觉
TA贡献1824条经验 获得超5个赞
似乎问题是在此处分配数据库时:
DB, err := sql.Open("postgres", dbURL)
数据库在新范围内定义,因此这会创建一个局部变量而不是设置 pkg 级变量。因此,代码Open()
建立了与数据库的连接。
试试这个:
var err error DB, err = sql.Open("postgres", dbURL)
这是官方报价:
与常规变量声明不同,短变量声明可以重新声明变量,前提是它们最初是在同一块(如果块是函数体,则为参数列表)中较早声明的,具有相同的类型,并且至少有一个非空变量是新的。因此,重新声明只能出现在多变量简短声明中。重新声明不会引入新变量;它只是为原始值分配了一个新值。
- 1 回答
- 0 关注
- 101 浏览
添加回答
举报
0/150
提交
取消