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

我一直在尝试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


type 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",


aluckdog
浏览 103回答 1
1回答

米琪卡哇伊

所以,我把 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}}}并且它们会产生所需的结果。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go