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

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

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

Go
叮当猫咪 2022-07-25 11:18:49
我一直在尝试使用 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 []Payloads这不是很好。我一直在尝试不同的事情,例如将所有字段设为字符串,但没有任何效果。
查看完整描述

1 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

因此,我将 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-07-25
  • 1 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号