GraphQL突变中的亚型

时间:2019-07-08 18:05:41

标签: reactjs graphql

我正在尝试在graphql突变中指定一个亚型 使用AWS Amplify和AWS AppSync。

mutation CreatePhoneType {
  createPhoneType(input: {
    desc: "Mobile Phone"
  }) {
    id
    desc
  }
}

mutation CreatePhone {
  createPhone(input: {
    number: "+91 704-011-2342",
    phonetype: { id: "f6b3c538-378a-48d1-a264-96dfef4472a4" }    
  }) {
    id
    number,
    phonetype {
      id
    }
  }
}

这是架构定义:

type Phone @model {
  id: ID!
  number: AWSPhone!
  phonetype: PhoneType
  createdAt: AWSDateTime
  updatedAt: AWSDateTime
}

type PhoneType @model {
  id: ID!
  desc: String!
  createdAt: AWSDateTime
  updatedAt: AWSDateTime
}

我正在尝试插入新的电话值。电话类型具有电话类型的子类型。我已经成功创建了PhoneType,并希望引用现有的电话类型作为创建Phone值的突变的一部分。我尝试指定ID!但这不起作用。在GraphQL突变中创建新值时,如何指定现有子类型? 我已经检查了GraphQL文档,但是信息不多。

1 个答案:

答案 0 :(得分:1)

弄清楚了。新手问题-抱歉。

您需要添加@connection来生成相关类型。

所以电话应该是:

type Phone @model {
  id: ID!
  number: AWSPhone!
  phonetype: PhoneType @connection
  createdAt: AWSDateTime
  updatedAt: AWSDateTime
}

执行此操作后,就可以引用生成的类型。

所以这现在可行:

mutation CreatePhone {
  createPhone(input: {
    number: "+91 704-011-2342",
    phonePhonetypeId: "f6b3c538-378a-48d1-a264-96dfef4472a4"  
  }) {
    id
    number
  }
}