GraphQL嵌套变异+ Sequelize

时间:2018-03-15 10:15:24

标签: node.js sequelize.js graphql apollo-client mutation

我正在使用graphQL,sequelize和nodejs与apollo客户端。 我从UI发送的数据是以下形式的嵌套结构:

  

祖父母

     

     

所以祖父母可以有一个或多个父母,父母可以有一个或多个孩子。

我正在尝试使用一个GraphQL突变来更新使用sequelize创建的SQLite数据库。我能够创建一个扁平结构的突变:

schema.gql文件内容 - >

type Mutation Family(
    grandParentName: String,
    grandParentHeight: String,
    Parent: String,
)

但我想要的是

type Mutation CreateNestedFamily(
    grandParentName: String,
    grandParentHeight: String,
    Parent: CreateParent(
           parentName: String,
           parentHeight: String
           child: CreateChild(
                 childName: String,
                 childHeight: String
                 )
            )
)

但我不知道如何实现这一点,并且围绕嵌套突变的graphql文档非常有限。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

你表达问题的方式有点奇怪,但我会尽我所能指出你正确的方向。

在GraphQL中没有嵌套变异这样的东西,但是你可以构造输入类型,允许任意嵌套你传递给单个变异的数据。

我会退出你的方法并采取一个特定的问题"我想创造一个人及其后代"

input PersonInput {
  name: String!
  height: String!
  children: [PersonInput!]
}

type Mutation {
  createPerson(person: PersonInput!): SomeOutputType
}

希望您能看到此结构的递归特性。对此施加限制更加困难,即只允许3级深度。