亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

作為對象的變異參數

作為對象的變異參數

Go
心有法竹 2023-04-04 14:13:38
我正在使用GraphQL 的 Go 實現。你將如何配置一個突變,以便它可以接收超過 1 級的參數?例如,這是我想傳遞給突變 CreateUser 的參數列表:mutation createUser($user: CreateUser!) {  createUser(input: $user)}{  "user": {    "name": {      "first": "John",      "last": "Doe"    },    "email": "[email protected]"  }}(請注意,我不想使用名字和姓氏,而是使用名稱對象)到目前為止,這是我的(不成功的)嘗試:var CreateUserInput = graphql.FieldConfigArgument{    "input": &graphql.ArgumentConfig{        Description: "Input for creating a new user",        Type: graphql.NewNonNull(graphql.NewInputObject(graphql.InputObjectConfig{            Name: "CreateUser",            Fields: graphql.InputObjectConfigFieldMap{                "name": &graphql.InputObjectFieldConfig{                    Type: graphql.NewNonNull(graphql.NewInputObject(graphql.InputObjectConfig{                        Fields: graphql.InputObjectConfigFieldMap{                            "first": &graphql.InputObjectFieldConfig{                                Type: graphql.NewNonNull(graphql.String),                            },                            "last": &graphql.InputObjectFieldConfig{                                Type: graphql.NewNonNull(graphql.String),                            },                        },                    })),                },                "email": &graphql.InputObjectFieldConfig{                    Type: graphql.NewNonNull(graphql.String),                },            },        })),    },}顯然,子字段first和last未被識別,因為這是我運行此突變時得到的結果:{  "data": null,  "errors": [    {      "message": "Variable \"$user\" got invalid value {\"email\":\"[email protected]\",\"name\":{\"first\":\"john\",\"last\":\"doe\"}}.\nIn field \"name\": In field \"first\": Unknown field.\nIn field \"name\": In field \"last\": Unknown field.",      "locations": [        {          "line": 1,          "column": 21        }      ]    }  ]}這可能嗎?編輯:請參閱解決方案已接受答案中的評論。
查看完整描述

1 回答

?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

這是我的第一行 Go,但我會嘗試傳達我認為的問題所在。


首先讓我們談談你想要的結構。我將在這里使用 SDL:


type Mutation {

  createUser(user: CreateUser!): Boolean! # Maybe return user type here?

}


input CreateUser {

  name: CreateUserName!

  email: String!

}


input CreateUserName {

  first: String!

  last: String!

}

好的,現在我們知道我們需要兩種輸入類型,讓我們開始吧!


var CreateUserName = graphql.NewInputObject(graphql.InputObjectConfig{

    Name: "CreateUserName",

    Fields: graphql.InputObjectConfigFieldMap{

        "first": &graphql.InputObjectFieldConfig{

            Type: graphql.NewNonNull(graphql.String),

        },

        "last": &graphql.InputObjectFieldConfig{

            Type: graphql.NewNonNull(graphql.String),

        },

    },

})


var CreateUser = graphql.NewInputObject(graphql.InputObjectConfig{

    Name: "CreateUser",

    Fields: graphql.InputObjectConfigFieldMap{

        "name": &graphql.InputObjectFieldConfig{

            Type: graphql.NewNonNull(CreateUserName),

        },

        "email": &graphql.InputObjectFieldConfig{

            Type: graphql.NewNonNull(graphql.String),

        },

    },

})

現在剩下的就是將 mutation 字段添加到您的 mutation 對象類型中。


查看完整回答
反對 回復 2023-04-04
  • 1 回答
  • 0 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號