Phi*_*ren 13 graphql aws-appsync aws-amplify
AWS-Amplify 提供了几个指令来构建 GraphQL-API。但我还没有找到如何确保字段的唯一性。
我想在 GraphCool 中做类似的事情:
type Tag @model @searchable {
id: ID!
label: String! @isUnique
}
Run Code Online (Sandbox Code Playgroud)
这是一个 AWS-Amplify 特定问题。这不是关于如何使用通用 GraphQL 来做到这一点。它非常具体地介绍了如何使用 AWS-Amplify 的 API 模块执行此操作。( https://aws-amplify.github.io/docs/js/api )
嘿谢谢你的问题。默认情况下,使用 amplify-cli 还无法做到这一点,但您可以使用管道解析器和 DynamoDB 表上的额外索引自行完成。执行此操作的步骤如下:
Mutation.createTag在架构中的字段上创建管道解析器。您可以Mutation.createTag通过将 @model 定义更改为 来关闭自动生成的突变@model(mutations: { update: "updateTag", delete: "deleteTag" })。LookupLabel,该函数Query针对新的 GSI发出label = $ctx.args.input.label. 如果这返回一个值,则抛出一个错误$util.error("Label is not unique")。如果它没有返回值,则继续。CreateTag,该函数PutItem针对 Tag 表发出 a 。您可以在此处阅读有关管道解析器的更多信息https://docs.aws.amazon.com/appsync/latest/devguide/pipeline-resolvers.html。
截至撰写时,amplify 尚不支持自定义和管道解析器,但您可以在https://github.com/aws-amplify/amplify-cli/issues/574 上阅读有关该功能的更多信息,因为将来会支持它。现在,您可以在 AWS AppSync 控制台中手动添加解析器,也可以通过您自己的 CloudFormation 模板添加解析器,该模板以 Amplify 创建的 API 的 ID 为目标。如果您在此处创建问题 ( https://github.com/aws-amplify/amplify-cli/issues ) 并将其标记为功能请求,这也会很有帮助,因为可以使用 @unique 指令自动执行此操作但这需要计划。
谢谢
| 归档时间: |
|
| 查看次数: |
3454 次 |
| 最近记录: |