我正在使用gorethink驱动程序,我在模型中编写了这样的查询函数
func GetQuotesByUser(idUser string) []Quote{
ids:=GetQuoteIdsByUser(idUser)
if (len(ids)>0){
result,err:=r.Table("quote").GetAll(ids...).Run(config.Connection())
defer result.Close()
if err!=nil{
fmt.Println(err)
return []Quote{}
}
var quotes []Quote
err=result.All("es)
if err!=nil{
fmt.Println(err)
return []Quote{}
}
fmt.Println(quotes)
return quotes
} else{
return []Quote{}
}
}
我编写了一个调用上述函数的路由处理程序
import (
"corate/util"
"corate/model"
"github.com/fatih/structs"
"net/http"
)
func DashboardHandler(w http.ResponseWriter,r *http.Request){
files:=[]string{"base","dashboard"}
session,_:=util.GlobalSessions.SessionStart(w,r)
defer session.SessionRelease(w)
quotes:=model.GetQuotesByUser("ca8a2e14-f65b-43b1-b655-97d7c29190ec")
q:=structs.Map(quotes)
util.RenderTemplate(w,q,files...)
}
这是main功能
func main(){
// Setup database
config.Setupdb()
// Initialize session manager
util.InitSessionManager()
// Serve static folder
http.Handle("/public/",http.StripPrefix("/public/",http.FileServer(http.Dir("public"))))
// Setup routers and middlewares
http.HandleFunc("/",route.IndexHandler)
http.HandleFunc("/login",route.GoogleLoginHandler)
http.HandleFunc("/auth/google",route.GoogleCallbackHandler)
http.Handle("/dashboard",negroni.New(
negroni.HandlerFunc(route.IsAuthenticated),
negroni.Wrap(http.HandlerFunc(route.DashboardHandler)),
))
// Start listening
http.ListenAndServe(":3000",nil)
}
我使用astaxie/beego/session库来管理此服务器的会话
import (
"github.com/astaxie/beego/session"
)
var (
GlobalSessions *session.Manager
)
当我启动服务器,登录并请求dashboard路径,DashboardHandler被处理,GetQuotesByUser被调用,它工作,它工作,它确实打印出查询的真实结果。但是在浏览器中,浏览器抛出错误:
没有接收到数据
ERR_EMPTY_RESPONSE
为什么会发生?然后我注意到,如果我不使用fatih/structs
库,就不会出错。但是我想使用那个库,它对我有很大帮助。我想知道这种奇怪行为的原因以及如何在仍在使用fatih/structs
库的同时修复它
哈士奇WWW
相关分类