标签: scaphold

如何将对象列表或数组传递到旨在更新单个对象的 GraphQL 突变中?

我正在使用Scaphold.io来构建我正在开发的一个小应用程序的后端,并且在尝试更新单个变更请求中的多个项目时遇到了问题。

在 Scaphold 中,当您创建新类型时,会为常见操作创建更改:创建、更新和删除。

您无法重新定义这些更改或其输入类型的架构。在我正在工作的模型类型 ( card) 中,我立即获得了这些突变:

createCard(input: CreateCardInput!): CreateCardPayload

updateCard(input: UpdateCardInput!): UpdateCardPayload

deleteCard(input: DeleteCardInput!): DeleteCardPayload
Run Code Online (Sandbox Code Playgroud)

updateCardInput类型定义了以下字段:

listId: ID
description: Text
name: String
order: Int
id: ID!
clientMutationId: String
Run Code Online (Sandbox Code Playgroud)

我能做的:更新一张卡

有了这个,我知道如何定义一个更新order单卡的突变:

mutation updateCardOrder($card: UpdateCardInput!) {
  updateCard(input: $card) {
    changedCard {
      id
      order
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

变量:

{
  "card": {
    "id": "Q2FyZDo4MzA=",
    "order": "1"
  }
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是:在一个突变中更新多张卡片

我得到了一些使用卡片列表 ( [card]) 作为输入的指针,但我不知道如何让它工作。

理想情况下,类似于:

mutation updateCardOrder($cards: UpdateCardInput!) {
  updateCard(input: $card) {
    changedCard …
Run Code Online (Sandbox Code Playgroud)

apollo graphql scaphold

7
推荐指数
1
解决办法
5268
查看次数

应如何通过 GraphQL 突变对列表中的项目进行重新排序并更新多个对象?

我正在使用的堆栈


我正在尝试做什么

我正在构建一个向用户呈现多个列表的应用程序,每个列表都包含多张卡片。在列表中,用户可以对卡片重新排序。卡片也可以从一个列表移动到另一个列表,这会更改卡片的父列表以及卡片在源列表和目标列表中的顺序。

这是一个 GIF,显示了我的应用程序中的卡片/列表和重新排序的 UI。您在这里看到的都是在客户端发生的,并且更改不会持久保存到数据库中:

从我的应用程序拖放的示例

这是我用来构建 UI 的查询:

const foo = gql`
  query foo {
    getAccount(id: "xxxxx") {
      cardLists {        
        edges {
          node {
            id
            name
            cards(orderBy: {field: order, direction: ASC}) {
              edges {
                node {
                  id
                  name
                  order
                }
              }
            }
          }
        }
      }
    }
  }
`
Run Code Online (Sandbox Code Playgroud)

这是来自 Vue Draggable 项目的 GIF,它进一步说明了我正在做的事情(注意数据中的“order”值):

Vue Draggable 项目中的拖放示例


问题

我不知道如何构建突变来处理重新排序,以便正确保留移动的卡以及源列表和目标列表的排序更改。

在 Scaphold 中构建模式意味着我需要(我认为)使用它提供的突变。我没有找到将多个卡片和列表传递给单个突变的方法,以便我可以立即更新所有内容。

以下是 Scaphold.io 中示例项目的端点:https://us-west-2.api.scaphold.io/graphql/soreorderingexample

这是 Scaphold.io 生成的架构:https://d3uepj124s5rcx.cloudfront.net/items/1e1m2q3F170C2G3M0v2p/schema.json


我的问题

  • 在 GraphQL …

apollo graphql scaphold

5
推荐指数
1
解决办法
1978
查看次数

标签 统计

apollo ×2

graphql ×2

scaphold ×2