gpt4 book ai didi

http - panic - 没有收到数据 - ERR_EMPTY_RESPONSE

转载 作者:IT王子 更新时间:2023-10-29 02:14:51 26 4
gpt4 key购买 nike

我正在使用 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(&quotes)
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...)
}

这是主要函数

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 库来管理此服务器的 session

import (
"github.com/astaxie/beego/session"
)

var (
GlobalSessions *session.Manager
)

func InitSessionManager() {
GlobalSessions, _ = session.NewManager("memory", `{"cookieName":"gosessionid","gclifetime":3600}`)
go GlobalSessions.GC()
}

当我启动服务器,登录并请求到 dashboard 路径时,DashboardHandler 被处理,GetQuotesByUser 被调用,它起作用了,它有效,它确实打印出查询的真实结果。但是在浏览器中,浏览器抛出错误:

没有收到数据

ERR_EMPTY_RESPONSE

控制台也会记录一些错误

http: panic serving 127.0.0.1:51229: not struct
goroutine 84 [running]:
net/http.(*conn).serve.func1(0xc82015fc00)
/home/kuro/.gvm/gos/go1.6/src/net/http/server.go:1389 +0xc1
panic(0x7f58e0, 0xc8204489f0)
/home/kuro/.gvm/gos/go1.6/src/runtime/panic.go:426 +0x4e9
github.com/fatih/structs.strctVal(0x7de700, 0xc82045a340, 0x0, 0x0, 0x0)
/home/kuro/Workspace/Go/src/github.com/fatih/structs/structs.go:426 +0x136
github.com/fatih/structs.New(0x7de700, 0xc82045a340, 0x0)
/home/kuro/Workspace/Go/src/github.com/fatih/structs/structs.go:30 +0x2f
github.com/fatih/structs.Map(0x7de700, 0xc82045a340, 0xc82045a340)
/home/kuro/Workspace/Go/src/github.com/fatih/structs/structs.go:435 +0x2b
corate/route.DashboardHandler(0x7fe2c2e6dfc8, 0xc8202d49c0, 0xc820372460)
/home/kuro/Workspace/Go/src/corate/route/user.go:19 +0x190
net/http.HandlerFunc.ServeHTTP(0xa47820, 0x7fe2c2e6dfc8, 0xc8202d49c0, 0xc820372460)
/home/kuro/.gvm/gos/go1.6/src/net/http/server.go:1618 +0x3a
github.com/codegangsta/negroni.Wrap.func1(0x7fe2c2e6dfc8, 0xc8202d49c0, 0xc820372460, 0xc8203f0a60)
/home/kuro/Workspace/Go/src/github.com/codegangsta/negroni/negroni.go:41 +0x50
github.com/codegangsta/negroni.HandlerFunc.ServeHTTP(0xc82012ace0, 0x7fe2c2e6dfc8, 0xc8202d49c0, 0xc820372460, 0xc8203f0a60)
/home/kuro/Workspace/Go/src/github.com/codegangsta/negroni/negroni.go:24 +0x44
github.com/codegangsta/negroni.middleware.ServeHTTP(0x7fe2c2e6ade0, 0xc82012ace0, 0xc82012ad40, 0x7fe2c2e6dfc8, 0xc8202d49c0, 0xc820372460)
/home/kuro/Workspace/Go/src/github.com/codegangsta/negroni/negroni.go:33 +0xaa
github.com/codegangsta/negroni.(middleware).ServeHTTP-fm(0x7fe2c2e6dfc8, 0xc8202d49c0, 0xc820372460)
/home/kuro/Workspace/Go/src/github.com/codegangsta/negroni/negroni.go:33 +0x53
corate/route.IsAuthenticated(0x7fe2c2e6dfc8, 0xc8202d49c0, 0xc820372460, 0xc8203f0a00)
/home/kuro/Workspace/Go/src/corate/route/isAuthenticated.go:14 +0x174
github.com/codegangsta/negroni.HandlerFunc.ServeHTTP(0xa47840, 0x7fe2c2e6dfc8, 0xc8202d49c0, 0xc820372460, 0xc8203f0a00)
/home/kuro/Workspace/Go/src/github.com/codegangsta/negroni/negroni.go:24 +0x44
github.com/codegangsta/negroni.middleware.ServeHTTP(0x7fe2c2e6ade0, 0xa47840, 0xc82012ad20, 0x7fe2c2e6dfc8, 0xc8202d49c0, 0xc820372460)
/home/kuro/Workspace/Go/src/github.com/codegangsta/negroni/negroni.go:33 +0xaa
github.com/codegangsta/negroni.(*Negroni).ServeHTTP(0xc8200cfe90, 0x7fe2c2e6af70, 0xc820154680, 0xc820372460)
/home/kuro/Workspace/Go/src/github.com/codegangsta/negroni/negroni.go:73 +0x122
net/http.(*ServeMux).ServeHTTP(0xc820013740, 0x7fe2c2e6af70, 0xc820154680, 0xc820372460)
/home/kuro/.gvm/gos/go1.6/src/net/http/server.go:1910 +0x17d
net/http.serverHandler.ServeHTTP(0xc82000e380, 0x7fe2c2e6af70, 0xc820154680, 0xc820372460)
/home/kuro/.gvm/gos/go1.6/src/net/http/server.go:2081 +0x19e
net/http.(*conn).serve(0xc82015fc00)
/home/kuro/.gvm/gos/go1.6/src/net/http/server.go:1472 +0xf2e
created by net/http.(*Server).Serve
/home/kuro/.gvm/gos/go1.6/src/net/http/server.go:2137 +0x44e

为什么会这样?然后我注意到,如果我不使用 fatih/structs 库,就不会出错。但是我想使用那个库,它会对我有很大帮助。我想知道这种奇怪行为的原因以及如何在仍然使用 fatih/structs 库的同时修复它

最佳答案

GetQuotesByUser 返回一个 slice ,而不是一个结构。所以你不能将它直接传递给structs.Map。您必须迭代 slice 并将每个元素单独转换为 map 。

quotes := model.GetQuotesByUser("ca8a2e14-f65b-43b1-b655-97d7c29190ec")

qs := []map[string]interface{}{}
for _, q := range quotes {
qs = append(qs, structs.Map(q))
}

util.RenderTemplate(w,qs,files...)

应该让你接近你所追求的。

关于http - panic - 没有收到数据 - ERR_EMPTY_RESPONSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36062509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com