如何使用正确的 @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 元数据?

PDFBox 字段值在展平后无法显示

值在函数中正确打印,但返回时为 None

Flutter-如何根据if和else语句的值在点击时切换RaisedButton的颜色

Connection reset by peer