【发布时间】: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