恐慌 - 未收到数据 - ERR_EMPTY_RESPONSE

我正在使用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...)

}

这是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库的同时修复它


qq_遁去的一_1
浏览 243回答 1
1回答

哈士奇WWW

GetQuotesByUser返回一个切片,而不是一个结构。所以你不能直接将它传递给structs.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...)应该让你接近你所追求的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go