3
オブジェクトをスカラーではなくクエリの引数として渡そうとしています。ドキュメントからは、これが可能であるはずですが、私はそれを動作させる方法を理解できません。graphql-go:クエリの入力引数としてオブジェクトを使用する
私はここで、graphql-行く使っていますが、テスト・スキーマです:
var fileDocumentType = graphql.NewObject(graphql.ObjectConfig{
Name: "FileDocument",
Fields: graphql.Fields{
"id": &graphql.Field{
Type: graphql.String,
Resolve: func(p graphql.ResolveParams) (interface{}, error) {
if fileDoc, ok := p.Source.(data_format.FileDocument); ok {
return fileDoc.Id, nil
}
return "", nil
},
},
"tags": &graphql.Field{
Type: graphql.NewList(tagsDataType),
Args: graphql.FieldConfigArgument{
"tags": &graphql.ArgumentConfig{
Type: tagsInputType,
},
},
Resolve: func(p graphql.ResolveParams) (interface{}, error) {
fmt.Println(p.Source)
fmt.Println(p.Args)
if fileDoc, ok := p.Source.(data_format.FileDocument); ok {
return fileDoc.Tags, nil
}
return nil, nil
},
},
},
})
そして、私は
(私ははInputObjectと標準オブジェクトの両方を試してみた)使用しようとしていますinputtypeここvar tagsInputType = graphql.NewInputObject(graphql.InputObjectConfig{
Name: "tagsInput",
Fields: graphql.Fields{
"keyt": &graphql.Field{
Type: graphql.String,
},
"valuet": &graphql.Field{
Type: graphql.String,
},
},
})
そして、私がテストに使用していgraphqlクエリです:
{
list(location:"blah",rule:"blah")
{
id,tags(tags:{keyt:"test",valuet:"test"})
{
key,
value
},
{
datacentre,
handlerData
{
key,
value
}
}
}
}
私は次のエラーを取得しています:
wrong result, unexpected errors: [Argument "tags" has invalid value {keyt: "test", valuet: "test"}.
In field "keyt": Unknown field.
In field "valuet": Unknown field.]
タイプを文字列に変更すると、問題なく動作します。入力引数としてオブジェクトを使用するにはどうすればよいですか?
ありがとうございます!
おかげで、あなたは私のために少し時間を保存! +1 –