微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 GraphQL 突变中使用 FaunaDB 将数组传递给字段

如何解决如何在 GraphQL 突变中使用 FaunaDB 将数组传递给字段

我不认为我在以正确的 graphQL 方式做事,但我不确定如何在 graphQL 中实现它。

我有以下架构,然后将其上传到 FaunaDB,他们做了一些魔术将其转换为可用的 graphQL api 端点。

type Catalog {
  decor: Boolean
  clothing: Boolean
  supplies: Boolean
  furniture: Boolean
  owner: User
}

type Decor {
  description: String
  pieces: Int
  purchaser: String
  alterations: Boolean
  cost: Int
  purchaseDate: Date
  category: String
  image: String
  itemNum: Int
  owner: User!
  visible: Boolean
}

type DecorSheet {
  sheetName: String
  refIdArray: String
  owner: User!
}

type User {
  email: String! @unique
  catalog: Catalog
  decor: [Decor!] @relation
  decorSheet: [DecorSheet!] @relation
}

type Query {
  getMultipleDecors(DecorId: [ID!]): [Decor]
    @resolver(name: "get_multiple_decors")
}

我需要创建一个DecorSheet类型,我需要refIdArray,成为一个像这样的对象数组

[
    {
        "refId0": "293164663883956749"
    },{
        "refId1": "293526016787218952"
    }
]

我有以下突变 gql 可以触发阿波罗

const CREATE_DECOR_SHEET = gql`
  mutation CreateDecorSheet(
    $ownerID: ID!
    # $description: String!
    $sheetName: String
    $refIdArray: String!
  ) {
    createDecorSheet(data: { sheetName: $sheetName,refIdArray: $refIdArray,owner: { connect: $ownerID } }) {
      refIdArray
      sheetName
      _id
    }
  }
`;

在这里调用

const res = await createDecorSheet({
      variables: {
        ownerID: user.id,// ...dataMassage,sheetName: dataForm.sheetName,refIdArray: JSON.stringify(chosenValues),//A WAY TO DO THIS GRAPHQL STYLE
      },}).catch(console.error);

目前我正在对 selectedValues 进行字符串化,这与我上面列出的数组中 refId 和 Id 对象的值相同。

有没有更好的方法来做到这一点,我是否需要编写一个自定义突变,您可以将一组对象传递给 refIdArray。

如果有人能帮上忙,那就太好了。

谢谢

解决方法

我最终将架构更新为

type DecorSheet {
  sheetName: String
  refIdArray: [ID]
  owner: User!
}

然后我就按原样传递了我的数组

const res = await createDecorSheet({
        variables: {
       ownerID: user.id,// ...dataMassage,sheetName: dataForm.sheetName,refIdArray: chosenValues,//array here
        },}).catch(console.error);

gql 突变看起来是这样

 const CREATE_DECOR_SHEET = gql`
    mutation CreateDecorSheet(
      $ownerID: ID!
      # $description: String!
      $sheetName: String
      $refIdArray: [ID]
    ) {
      createDecorSheet(
        data: {
          sheetName: $sheetName
          refIdArray: $refIdArray
          owner: { connect: $ownerID }
        }
      ) {
        refIdArray
        sheetName
        _id
      }
    }
  `;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。