Graphql输入对象数组的类型

时间:2019-02-15 14:51:23

标签: javascript node.js express graphql express-graphql

我有这样的架构:

type Preference{
    _id: ID!
    uID: ID!
    preferences: [Category!]!
}

type Category{
    name: String!
    subcategories: [String]!
}

type RootMutation{
    createPreference(perferenceInput: PerferenceInput) : Preference
}

input PerferenceInput{
    uID: String!
    preferences: [Category!]!
}

schema {    
    query: RootQuery
    mutation: RootMutation
}

type RootQuery {
    preferences: [Preference!]!
    category: [Category!]!
}

但是Graphql给我一个错误,指出:message": "The type of PerferenceInput.preferences must be Input Type but got: [Category].",,我追溯到它与graphql无法解析[Category]数组有关。

我需要将此数组作为Preference对象内部的嵌套数组,但是以某种方式graphql不能解析此数组。因此,如何将Category数组作为输入类型传递?

1 个答案:

答案 0 :(得分:1)

这是众所周知的GraphQL限制。

  

您不能将常规GraphQLObjectTypes用作GraphQLInputObjectType字段的类型,而必须使用另一个GraphQLInputObjectType

您不能在架构中混合输入和输出类型。输入和输出类型具有不同的类型范围。