【问题标题】:AWS Amplify many-to-many - delete not workingAWS Amplify 多对多 - 删除不起作用
【发布时间】:2021-03-27 19:25:53
【问题描述】:

我有一个多对多的关系来放大以下架构

type Blog 
@model 
@searchable 
{
  id: ID!
  title: String!
  tags: [BlogTag] @connection(keyName: "byBlog", fields: ["id"])
}

type Tag 
@model 
@searchable
{
  id: ID!
  name: String!
  blogs: [BlogTag] @connection(keyName: "byTag", fields: ["id"])
}

type BlogTag 
@model 
@key(name: "byBlog", fields: ["blogID", "tagID"]) 
@key(name: "byTag", fields: ["tagID", "blogID"]) 
{
  id: ID!
  blogID: ID!
  tagID: ID!
  blog: Blog! @connection(fields: ["blogID"])
  tag: Tag! @connection(fields: ["tagID"])
}

当我尝试删除 BlogTag 条目时,我收到以下错误:

message: "Conflict resolver rejects mutation."
path: ["deleteBlogTag"]

我尝试使用以下代码删除条目:

import { API } from "aws-amplify";
import {deleteBlogTag} from "../graphql/mutations";

...
await API.graphql({
      query: deleteBlogTag,
      variables: { input: { id: blogTagId } },
    });

我不明白为什么会有冲突。如果我正在删除一个博客,并且会有指向该博客的 BlogTags,那么这当然是一个冲突。但是为什么删除 BlogTag 会发生冲突?这是我在架构中缺少的东西吗?

【问题讨论】:

  • 删除 Blog.tags 或 Tag.blogs 中的某些条目应该会导致删除“连接条目”(BlogTag)...删除“连接条目”会留下两个连接端的 ID(标签或博客条目) 指向无处?
  • 我试过了。但我不能直接更新博客中的标签,反之亦然。我收到错误“变量输入包含未为输入对象类型'UpdateBlogInput'定义的字段名称'tags'”根据文档,我必须删除BlogTag条目...

标签: amazon-web-services graphql many-to-many amplify


【解决方案1】:

您需要提供_version参数,即

await API.graphql({
      query: deleteBlogTag,
      variables: { input: { id: blogTagId, _version: version } },
      });

但我建议通过amplify update api 并删除同步冲突解决方案。

【讨论】:

    猜你喜欢
    • 2020-04-12
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多