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

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

Vue Apollo:變量沒有添加到 graphql 查詢,或者我沒有在后端正確接受它們

Vue Apollo:變量沒有添加到 graphql 查詢,或者我沒有在后端正確接受它們

Go
幕布斯7119047 2023-06-12 14:30:44
我似乎無(wú)法將使用 apollo 進(jìn)行的 graphql 查詢中的變量放入查詢主體以被后端服務(wù)器接受。我有一個(gè)簡(jiǎn)單的 vue 前端和后端。在 vue-component 我有以下查詢:apollo: {    entry: {      query: gql`        query variables($userID: Int){          entries(userID: $userID) {            id,            value,            timeStamp          }        }      `,      variables() {        return {          userID: 2        }      }      update: data => data,    }  }}在我的后端,我為所有 POST 請(qǐng)求設(shè)置了處理函數(shù)// GraphQL returns an http.HandlerFunc for our /graphql endpointfunc (s *Server) GraphQL() http.HandlerFunc {    return func(w http.ResponseWriter, r *http.Request) {        //Allow CORS here By * or specific origin        w.Header().Set("Access-Control-Allow-Origin", "*")        w.Header().Set("Access-Control-Allow-Headers", "Content-Type")        // Check to ensure query was provided in the request body        if r.Body == nil {            http.Error(w, "Must provide graphql query in request body", 400)            return        }        var rBody reqBody        // Decode the request body into rBody        err := json.NewDecoder(r.Body).Decode(&rBody)        if err != nil {            http.Error(w, "Error parsing JSON request body", 400)        }        fmt.Println(rBody.Query)        // Execute graphql query        result := gql.ExecuteQuery(rBody.Query, *s.GqlSchema)        // render.JSON comes from the chi/render package and handles        // marshalling to json, automatically escaping HTML and setting        // the Content-Type as application/json.        render.JSON(w, r, result)    }}當(dāng)我運(yùn)行查詢時(shí),返回 {"entries" : null}。當(dāng)我打印出發(fā)送到我的 go 服務(wù)器的查詢時(shí),我得到以下信息:query variables($userID: Int) {  entries(userID: $userID) {    id    value    timeStamp    __typename  }}在第 2 行中,我希望看到條目(用戶 ID:2)。事實(shí)上,如果我從 vue 中的查詢中刪除變量,并在查詢中硬編碼 userID,一切正常。我檢查以確保以某種方式發(fā)送變量,如果我查看 POST 請(qǐng)求,則它在參數(shù)中具有以下內(nèi)容:operationName   variablesquery   query variables($userID: Int) { entries(userID: $userID) { id value timeStamp __typename } }variables   {…}userID  2我是否沒有在后端正確接受數(shù)據(jù),因?yàn)樽兞?userID 是在 POST 請(qǐng)求中發(fā)送的?
查看完整描述

1 回答

?
千萬(wàn)里不及你

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

對(duì)于你的問(wèn)題,你后臺(tái)接收的數(shù)據(jù)是正確的,查詢本身不包含查詢參數(shù),查詢參數(shù)是通過(guò)variables鍵發(fā)送的。


響應(yīng)問(wèn)題是這一行result := gql.ExecuteQuery(rBody.Query, *s.GqlSchema)。 variables來(lái)自請(qǐng)求體也需要傳遞給ExecuteQuery. 使用函數(shù)的示例實(shí)現(xiàn)graphql-go/graphql Do可以是


func executeQuery(query string, schema graphql.Schema, variables map[string]interface{}) *graphql.Result {

    result := graphql.Do(graphql.Params{

        Schema:        schema,

        RequestString: query,

        VariableValues: variables

    })

    if len(result.Errors) > 0 {

        fmt.Printf("errors: %v", result.Errors)

    }

    return result

}

類型的一個(gè)例子reqBody可以是


type reqBody struct {

    Query string

    Variables map[string]interface{}

}

然后json.NewDecoder(r.Body).Decode(&rBody)會(huì)自動(dòng)設(shè)置Query和Variables


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

添加回答

舉報(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)