为了账号安全,请及时绑定邮箱和手机立即绑定

我的一些go-graphql查询的字段返回null,而其他字段恢复正常,其他类似的查询一起工作

我的一些go-graphql查询的字段返回null,而其他字段恢复正常,其他类似的查询一起工作

Go
aluckdog 2022-08-01 10:58:50
我一直在尝试go-grapqhql,并且我已经能够成功地创建一些架构,如下所示:type Artist struct {    ID   string `json:"id,omitempty"`    Name string `json:"name"`    Type string `json:"type"`    Instrument []Instrument `json:"instrument"`}type Instrument struct{    Name string `json:"name"`}var artists = []Artist{    {        ID:   "1",        Name: "Taylor Swift",        Type: "artist",        Instrument: []Instrument{            {Name:"violin"},        },    },}var instrumentType = graphql.NewObject(graphql.ObjectConfig{    Name: "Instrument",    Fields: graphql.Fields{        "name": &graphql.Field{            Type: graphql.String,        },    },})var artistType = graphql.NewObject(graphql.ObjectConfig{    Name: "Artist",    Fields: graphql.Fields{        "id": &graphql.Field{            Type: graphql.String,        },        "name": &graphql.Field{            Type: graphql.String,        },        "type": &graphql.Field{            Type: graphql.String,        },        "instrument": &graphql.Field{            Type: graphql.NewList(instrumentType),        },    },})但是,当我尝试用类似的结构做同样的事情时......type Blk struct {    Header Header `json:"header,omitempty"`    Payload []Payload `json:"payload,omitempty"`}type Header struct {    Parent string `json:"parent,omitempty"`    Number int `json:"number,omitempty"`    Nonce int `json:"nonce,omitempty"`    Time int `json:"time,omitempty"`    Miner string `json:"miner,omitempty"`}type Payloads []Payloadstype Payload struct {    From string `json:"from,omitempty"`    To string `json:"to,omitempty"`    Value int `json:"value,omitempty"`    Nonce int `json:"nonce,omitempty"`    Data string `json:"data,omitempty"`    Time int `json:"time,omitempty"`    Signature string `json:"signature,omitempty"`}var blk = []Blk{    {Header: Header{        Parent: "0000000000000000000000000000000000000000000000000000000000000000",        Number: 0,        Nonce:  1548399560,        Time:   1609374088,        Miner:  "0x699ecb24665b9734c420db0f75ed9677a8615eb1",
查看完整描述

1 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

所以,我把 graphql 模式改成了:


var blockType = graphql.NewObject(

    graphql.ObjectConfig{

        Name: "block",

        Fields: graphql.Fields{

            "header" :&graphql.Field{

                Type: headerType,

            },

            "payload": &graphql.Field{

                Type: graphql.NewList(payloadType),

            },

        },

    })


var payloadType = graphql.NewObject(

    graphql.ObjectConfig{

        Name: "payload",

        Fields: graphql.Fields{

            "from": &graphql.Field{

                Type: graphql.String,

            },

            "to": &graphql.Field{

                Type: graphql.String,

            },

            "value": &graphql.Field{

                Type: graphql.Int,

            },

            "nonce": &graphql.Field{

                Type: graphql.Int,

            },

            "data": &graphql.Field{

                Type: graphql.String,

            },

            "time": &graphql.Field{

                Type: graphql.Int,

            },

            "signature": &graphql.Field{

                Type: graphql.String,

            },

        },

    })


var headerType = graphql.NewObject(

    graphql.ObjectConfig{

        Name: "header",

        Fields: graphql.Fields{

            "parent": &graphql.Field{

                Type: graphql.String,

            },

            "number": &graphql.Field{

                Type: graphql.Int,

            },

            "nonce": &graphql.Field{

                Type: graphql.Int,

            },

            "time": &graphql.Field{

                Type: graphql.Int,

            },

            "miner": &graphql.Field{

                Type: graphql.String,

            },

        },

    },

)

现在,一切都按预期工作。看来这句话是罪魁祸首:


     "payload": &graphql.Field{

                Type: graphql.NewList(transactionType),

            },

出于某种原因,如果你尝试做这种类型的嵌套go-graphql(或者graphql不知道该怎么做)。FWI:现在我的查询看起来像这样:


query{

    blocks{header{parent,number,nonce,time,miner},payload{from,to,value,nonce,data,time,signature}}

}

并且它们会产生所需的结果。


查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信