首页 > 解决方案 > 发布 AWS Amplify GraphQL 突变时如何避免在数组中创建重复项

问题描述

前言:我是 GraphQL 和 Amplify 的新手。

我有一个包含两个数组的用户对象,一个称为preferred_genres,另一个称为preferred_characters。我有一个个人资料页面,用户可以在其中编辑他们的个人资料并将项目添加到这些数组中。

AWS Amplify 提供的更新突变似乎只是将元素添加到数组中,而不会删除它们。如果在我的 UI 上我从列表中删除一个项目,然后提交更新突变,则该项目不会从我的后端中删除。如果我将一个项目添加到数组中,该项目将添加到后端,但我最终也会得到那些已经在后端的重复值。

我想要做的是用我从前端提交的数据覆盖后端的数组。我错过了一些明显的东西吗?在 GraphQL 中是否有更合适的方法来实现这一点?

架构

type User @model {
  id: ID!
  ...
  preferred_characters: [Character]
  preferred_genres: [Genre]
  ...
}

显示数组中重复项的配置文件屏幕截图 后端数据库的屏幕截图,显示数组中的重复项

标签: amazon-web-servicesgraphqlaws-amplifyaws-appsync

解决方案


DataStore 的冲突解决文档:

在此处输入图像描述

更新冲突解决方案:

  1. 一种方法是按照文档的建议更新它(我这样做的方式)。

在此处输入图像描述

  1. 我检查了哪些文件发生了变化,唯一重要的更新密钥可以在amplify/backend/api/<yourApi>/transform.conf.json

从:

在此处输入图像描述

至:

在此处输入图像描述


推荐阅读