如何更新我的放大 graphql 模型的一部分?

Posted

技术标签:

【中文标题】如何更新我的放大 graphql 模型的一部分?【英文标题】:How to update part of my amplify graphql model? 【发布时间】:2021-11-10 14:29:58 【问题描述】:

我是 Aws Amplify 和 GraphQL 的新手,我正在努力寻找处理以下问题的最佳方法:

我希望能够在前端编辑我的常见问题解答。前端从后端获取数据,我在前端编辑一个字段并保存,应该存储在后端

我创建了一个简单的放大 graphql 架构:

type FAQ @model(timestamps: null) 
  id: ID!
  sectionTitle: String
  questionAndAnswer: [QuestionAndAnswer!]!


type QuestionAndAnswer 
  id: ID!
  question: String
  answer: String

然后我填充它,使其包含以下数据:


  "data": 
    "listFAQS": 
      "items": [
        
          "sectionTitle": "Title2",
          "id": "22735682-2bab-4695-b93e-1e50642d4654",
          "questionAndAnswer": [
            
              "answer": "answer4",
              "id": "4",
              "question": "question4"
            ,
            
              "answer": "answer5",
              "id": "5",
              "question": "question5"
            ,
            
              "answer": "answer6",
              "id": "6",
              "question": "question6"
            
          ]
        ,
        
          "sectionTitle": "Title1",
          "id": "21be8234-69f2-47fe-b942-d3e655197c70",
          "questionAndAnswer": [
            
              "answer": "answer1",
              "id": "1",
              "question": "question1"
            ,
            
              "answer": "answer2",
              "id": "2",
              "question": "question2"
            ,
            
              "answer": "answer3",
              "id": "3",
              "question": "question3"
            
          ]
        
      ]
    
  

有没有一种简单的方法可以让我只更改问题“question4”而不必发送整个常见问题解答“行”?

当我尝试它时,似乎整个数组都被重置了,只保存了新数据。 FAQ 和 QuestionAndAnswer 都应该是一个@model,我将它们与@connection 连接起来并根据需要分别更新它们吗?

【问题讨论】:

【参考方案1】:

以下似乎是一种简单的方法,因为如果需要,您可以只更新“question4”,方法是使用其自己的唯一 ID 和 GraphQL 突变。

type FAQ @model(timestamps: null) 
  id: ID!
  sectionTitle: String
  questionAndAnswer: [QuestionAndAnswer!]!


type QuestionAndAnswer @model 
  id: ID!
  question: Question
  answer: Answer


type Question @model 
  id: ID!
  question: String


type Answer @model 
  id: ID!
  answer: String

我没有包含@connections(它们应该在 QuestionAndAnswer 模型中),但“是”将是“FAQ 和 QuestionAndAnswer 是否都是 @model 的答案,我将它们与 @connection 连接并分别更新为需要吗?”。

【讨论】:

以上是关于如何更新我的放大 graphql 模型的一部分?的主要内容,如果未能解决你的问题,请参考以下文章

如何创建一个 lambda 函数来更新放大的新记录?

如何使用 amplify 将 GraphQL 更改从 Appsync 同步到 Android?

放大 api 推送不会更新云中的架构并在本地恢复

如果我不使用放大,如何从 AppSync GraphQL 架构生成 Typescript 定义?

Aws Amplify:部分更新(突变)

Sequelize with GraphQl:如何使用突变更新字段