字符串不能表示值 GraphQL

Posted

技术标签:

【中文标题】字符串不能表示值 GraphQL【英文标题】:String cannot represent value GraphQL 【发布时间】:2020-05-18 08:40:04 【问题描述】:

我正在构建一个 GraphQL API,在我的一个端点中我遇到了这个问题,它说“消息”:“字符串无法表示值:[\”Vitoria\”,\“Serra\”,\“Cariacica \", \"Vila Velha\"]"。

我已尝试更改类型:GraphQLList。


const alfa_regions = [
    ES_capital: ['Vitoria', 'Serra', 'Cariacica', 'Vila Velha'],
    ES_Interior: ['Piuma', 'Sao Gabriel'],
    MG_Capital: ['Contagem'],
    MG_Interior: ['Juiz de fora', 'Governador Valadares', 'Teofilo Otoni', 'Monte Claros'],
]


const 
    GraphQLObjectType,
    GraphQLSchema,
    GraphQLString,
    GraphQLFloat,
    GraphQLList
 = graphql

const AlfaRegionType = new GraphQLObjectType(
    name: 'AlfaRegion',
    fields: () => (
        id: type: GraphQLString,
        region_id: type: GraphQLString,
        ES_capital: type: GraphQLString,
    )
)

const RootQuery = new GraphQLObjectType(
    name: 'RootQueryType',
    fields: 
        regions: 
            type: AlfaRegionType,
            args: id: type: GraphQLString,
            resolve(parent, args)
                return _.find(alfa_regions, )
            
        
    
)


【问题讨论】:

【参考方案1】:

如果一个字段返回一个字符串数组,而不仅仅是一个字符串,那么你应该使用GraphQLList作为here所示的类型:

type: new GraphQLList(GraphQLString)

或使用 SDL

[String]

如果数组不包含任何空值,那就更好了

type: new GraphQLList(new GraphQLNonNull(GraphQLString))

或使用 SDL

[String!]

如果数组不包含任何空值并且字段本身永远不会为空,那么执行:

type: new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(GraphQLString)))

或使用 SDL

[String!]!

【讨论】:

以上是关于字符串不能表示值 GraphQL的主要内容,如果未能解决你的问题,请参考以下文章

ID 不能表示非字符串和非整数值

如何在 apollo graphQL 服务器的枚举值中添加特殊字符?

不能表示非枚举值

在 graphql-spqr 中以 Double 值对 NaN 建模

有没有办法在 GraphQL 中表示键值对的对象

节点 express-graphql 应用程序中使用的 Prisma 2 DateTime 字段