如何使用正确的 @connection 值在 AwsAppSync 突变中插入记录?
Posted
技术标签:
【中文标题】如何使用正确的 @connection 值在 AwsAppSync 突变中插入记录?【英文标题】:How can I insert records in AwsAppSync mutation with proper @connection values? 【发布时间】:2020-01-13 11:40:48 【问题描述】:我已将资源表添加到我的架构中,连接到植物表:
type Resource @model
id: ID!
name: String!
Plants: [Plant] @connection(name: "ResourcePlant")
运行放大推送,所有资源均已正确创建。
现在我想添加一个资源,并将其正确链接到所有植物。
您知道我应该如何使用 sintaxe 来运行最近创建的突变 createResource 以便将我想要包含的 Plant 项目添加到该资源中吗?
我试着这样跑:
mutation CreateResource
createResource (input:
name: "Plant",
Plants :
items :
id: "f9a0468e-da74-41d5-8287-1cb6a76b25a5"
)
name,
Plants
items
id
nextToken
这是错误信息:
Validation error of type WrongType: argument 'input' with value
'ObjectValueobjectFields=[ObjectFieldname='name',
value=StringValuevalue='Plant', ObjectFieldname='Plants',
value=ObjectValueobjectFields=[ObjectFieldname='items', value=ObjectValueobjectFields=[ObjectFieldname='id',
value=StringValuevalue='f9a0468e-da74-41d5-8287-1cb6a76b25a5']]]'
contains a field not in 'CreateResourceInput': 'Plants' @ 'createResource'
【问题讨论】:
【参考方案1】:好的,经过一番头疼之后,我发现了我的模型中缺少的东西。到目前为止,对我来说,事实证明这是建立这种关系的最佳方式......
我在我的 Plant 类型、架构定义中添加了一个名为 plantResourceId 的字段(除了用于 @connection 指令的字段)。我发现,按照惯例,在“植物”上插入/更新记录并添加我想要“连接”到该植物的资源的资源“id”字段内容时,将在“资源”时自动检索" 对每个项目进行查询 - 更好的是:codegen 中的开箱即用。
插入示例
mutation CreatePlant
createPlant(input:
name: "MyPlant",
plantResourceId: "id-for-connected-resource"
)
name,
plantResourceId
检索项目的查询示例:
query listPlantsOnResource
listResources(filter:
name:
contains: "myfilter"
)
items
id
name
Plants
items
id
name
description
效果很好!
感谢所有贡献的人!
【讨论】:
【参考方案2】:您是如何定义植物的?
你检查过这个例子吗? https://aws-amplify.github.io/docs/cli-toolchain/graphql#connection
【讨论】:
非常感谢,它已经这样工作了,根据链接:query ListResources listResources items id name Plants items id name
以上是关于如何使用正确的 @connection 值在 AwsAppSync 突变中插入记录?的主要内容,如果未能解决你的问题,请参考以下文章
Debezium 如何使用 Kafka Connect 正确注册 SqlServer 连接器 - 连接被拒绝
如何在 C# 中正确使用 OpenID Connect jwks_uri 元数据?