第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Go chi 渲染器難以處理綁定列表

Go chi 渲染器難以處理綁定列表

Go
浮云間 2022-06-13 15:14:55
到這里。試圖讓 chi 渲染器返回一個(gè)Order結(jié)構(gòu)實(shí)例列表并得到一個(gè)我不明白的編譯器錯(cuò)誤:package myappimport (    "net/http"    "github.com/go-chi/render")type Order struct {    OrderId    string  Status     string}func (*Order) Bind(r *http.Request) error {    return nil}func GetAllOrderByCustomerId(dbClient DbClient, customerId string) http.HandlerFunc {  return func(w http.ResponseWriter, r *http.Request) {    // fetch all customer orders from the DB    orders,err := dbClient.FetchAllOrdersByCustomerId(customerId)    if err != nil {      log.Error("unable to fetch orders for customer", err)      render.Render(w, r, NewInternalServerError(err))      return    }    render.Bind(r, &orders)    return  }}當(dāng)我去編譯這段代碼時(shí),我得到:fizz/buzz/myapp/order_fetcher.go:136:20: cannot use &orders (type *[]Order) as type render.Binder in argument to render.Bind:    *[]Order does not implement render.Binder (missing Bind method)因此,即使我定義了Bindfor Order,它似乎也不會(huì)自動(dòng)將其Bind應(yīng)用于Orders.誰(shuí)能看到我錯(cuò)過(guò)了什么?一些端點(diǎn)只會(huì)返回一個(gè)Order,而其他端點(diǎn)(比如這個(gè))需要能夠返回一個(gè)集合/列表Orders。
查看完整描述

1 回答

?
一只萌萌小番薯

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊

與存儲(chǔ)庫(kù)中的示例一樣chi,您必須創(chuàng)建一個(gè)輔助方法來(lái)呈現(xiàn)某些東西的列表,在您的情況下是訂單列表。


首先,您必須實(shí)現(xiàn)該render.Renderer方法,然后創(chuàng)建一個(gè)輔助方法來(lái)構(gòu)建render.Renderer.


我已從此處的示例中修改了您的代碼:


type Order struct {

    OrderId string

    Status  string

}


// Render implement render.Renderer

func (*Order) Render(w http.ResponseWriter, r *http.Request) error {

    // do something

    return nil

}


// newOrderList is a helper method to make list of render.Renderer

func newOrderList(orders []*Order) []render.Renderer {

    list := []render.Renderer{}

    for _, order := range orders {

        list = append(list, order)

    }

    return list

}


func GetAllOrderByCustomerId(dbClient DbClient, customerId string) http.HandlerFunc {

    return func(w http.ResponseWriter, r *http.Request) {


        // fetch all customer orders from the DB

        orders, err := dbClient.FetchAllOrdersByCustomerId(customerId)

        if err != nil {

            log.Error("unable to fetch orders for customer", err)

            render.Render(w, r, NewInternalServerError(err))

            return

        }


        // render list of orders

        render.RenderList(w, r, newOrderList(orders))

        return


    }

}


查看完整回答
反對(duì) 回復(fù) 2022-06-13
  • 1 回答
  • 0 關(guān)注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)