- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试开始使用AWS AppSync和AWS Amplify .
到目前为止,我设法按照 AWS 文档(特别是 here 和 here )成功创建了 sample TODO app (第三个代码片段)并启用 AppSync GraphQL API,如下所示:
$ amplify add api
? Please select from one of the below mentioned services GraphQL
? Provide API name: MySampleTodoAPI
? Choose an authorization type for the API API key
? Do you have an annotated GraphQL schema? No
? Do you want a guided schema creation? true
? What best describes your project: Single object with fields (e.g., “Todo” with ID, name, description)
这会生成这个“琐碎的”schema.graphql
(即仅包含一个对象):
type Todo @model {
id: ID!
name: String!
description: String
}
amplify push
从上面的文件生成一个更复杂的辅助 schema.graphql
,使用用于突变、查询等的对象创建 JavaScript 代码,并设置AWS 资源(即 DynamoDB 表、S3 存储桶等)。该应用程序似乎存在错误,但本质上是有效的 - 包括将 UI 中输入的数据添加到 DynamoDB 表中。
我以与上述相同的方式创建了第二个示例博客应用程序,只是这次选择带有字段的单个对象(例如,带有 ID、名称、描述的“Todo”)
而不是 >带有字段的单个对象...
.
这会生成这个“复杂的”schema.graphql
(即包含多个连接的对象):
type Blog @model {
id: ID!
name: String!
posts: [Post] @connection(name: "BlogPosts")
}
type Post @model {
id: ID!
title: String!
blog: Blog @connection(name: "BlogPosts")
comments: [Comment] @connection(name: "PostComments")
}
type Comment @model {
id: ID!
content: String
post: Post @connection(name: "PostComments")
}
问题:与 AWS AppSync GraphQL 后端通信时,如何处理 React 应用程序中的“复杂”对象?
作为一个(人为的)示例,假设我想添加一个新的 Blog
对象,其中包含一个 Post
和一个 Comment
对象,我可以吗以某种方式将所有对象传递给单个 Connect
React 组件中的单个突变?或者我是否必须首先触发 Blog
突变,然后再触发其他两个?或者我是否必须考虑自定义 Amplify 为我生成的(辅助)schema.graphql
和 JavaScript 文件?
不幸的是,AWS 示例代码仅处理“琐碎”模式,而不是“复杂”模式 - 而且 Amplify 似乎是开箱即用的,以至于所有第三方帖子和示例项目都使用其他技术...
非常感谢您的考虑! :-)
最佳答案
为了区分,复杂对象是 AWS AppSync 使用的一个术语,表示使用 S3 元数据。在你的复杂问题中,你指的是不平凡的模式。
据我了解,您希望使用单个突变来保存一堆相关类型。 AWS AppSync 允许您管理 GraphQL 架构、将数据源附加到字段、通过 VTL 解析器编写自定义逻辑。它还公开一个上下文变量,用于保存您的查询参数、父解析器的结果、实用函数等。因此您可以使用它们来获得您想要的内容。否则,就像您提到的那样,您将首先在 React 应用程序中进行更改以保存博客,然后是其他类型。
以下是为相关 GraphQL 类型编写单个突变的一些方法:
AWS Amplify 无法提供开箱即用的此功能,因为这将过于固执己见且以用例为导向。在许多情况下,一次性写入多个表而不考虑使此事务性化并应用适当的错误处理可能不是一个好主意。
我们正在寻找多种方法来改善开发者体验,您应该会在不久的将来看到一些更新。
关于reactjs - AWS AppSync react : how to work with "complex" GraphQL schema?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53268991/
谁能告诉我: aws-sdk/clients/appsync , 和 aws-appsync 根据文档,aws-sdk/clients/appsync使用是因为只包括 aws-sdk当我们只需要 ap
input CarInput{ name: String brand: String } type Car{ id: ID name: String
我花了最后一天尝试 AWS AppSync我对订阅可以做什么有点失望。 在我看来 AppSync subscription 的当前状态适用于您有一个项目列表并且您希望它在所有客户端上同步的用例。 与
似乎 AppSync 项目只能配置一种授权类型( API_KEY 、 AWS_IAM 等)。我正在使用 AMAZON_COGNITO_USER_POOLS作为我的主要类型,但我也有一个(Node.js
阅读 AppSync 文档,似乎 AppSync 订阅只能通过将订阅附加到突变来工作。 但是如果我需要一个独立于突变的订阅怎么办?这是在某些内部状态更改时触发的?例如,是否有新资源可用? 这在 App
在我正在使用的 appsync api 的 graphQl 架构中,我想根据他们所属的组来限制我的用户操作。 根据文档,添加行 aws_auth(cognito_groups: ["Admins"])
有没有办法将 GraphQL 类型描述添加到 AppSync 使用的 GraphQL 模式? ApolloServer 和 graphql-js 通过模式文件中的注释支持这一点(参见 here )。
我将 AppSync 与 aurora 无服务器解析器一起使用。我想知道是否可以在 RDS 解析器中运行事务。 我可以使用数据 api 但在 lambda 函数解析器中运行事务。 最佳答案 您可以编写
我想避免在我的 vtl 模板中重复某些声明,并在 vtl 解析器之间共享它们。 假设我在 mapping_templates/shared.vtl 中有一个示例字典 #set($sample_ma
我对 GraphQL 相当陌生,并且一直在为 GraphQL API 使用 AWS AppSync 服务。我使用 AWS Cognito 进行身份验证/授权、一些 Lambda 函数以及连接到我的 A
我要完成的任务: 我在 AppSync Web 控制台上编辑了一个 amplify + AppSync 项目,我想将它拉到我的本地机器上。 我做了什么: 我通过执行三个命令使用 Amplify CLI
目前 AWS AppSync 只能订阅突变,这是获得实时更新的唯一途径。但是,如果对 AppSync 之外的支持数据进行了更改(例如来自 Lambda 函数的 DynamoDB 更新),那么我们如何通
AWS Appsync 文档似乎使用 $util.和 $utils.可互换。它们实际上是不同的,还是同一事物的同义词? 最好的例子是 the resolver transformation helpe
我正在处理一个需要以图像形式上传附件的新项目。我正在使用 DynamoDB 和 AppSync API 从数据库中插入和检索数据。由于我们不熟悉 AppSync 以及我们为应用程序使用的所有亚马逊服务
我正在尝试查询特定日期范围内的所有项目(具有 AWS DateTime 的 CreatedAt 和 UpdatedAt 字段)。例如,过去 48 小时。 例如,使用这个架构: type Note @m
我想让我的 AWS AppSync 应用程序准备好为移动应用程序(Android 和 iOS)推送通知我有一个 GraphQL 模式和 Lambda 作为数据源。问题是我不知道最好的解决方案是什么。
我尝试包括在以下graphql模式中定义的嵌套类型: type User { id: String! posts: [Post] } type Post { id: String! } t
我遇到了 React/Apollo/AppSync 的问题,突变触发了两次(或多次)。我有一个 React 应用程序,它有一个由通常的 UI 按钮 onClick 触发的更新突变。 { that.t
我遇到了 React/Apollo/AppSync 的问题,突变触发了两次(或多次)。我有一个 React 应用程序,它有一个由通常的 UI 按钮 onClick 触发的更新突变。 { that.t
我正在尝试设置 graphql 订阅,但收到错误: Unhandled GraphQL subscription error Error: Error during subscription hand
我是一名优秀的程序员,十分优秀!