interface - AWS Amplify 和 GraphQL 接口
问题描述
您将如何处理接口并将它们用于使用 AWS Amplify 模型转换的数据模型中的连接?
interface User @model {
id: ID
email: String
created: AWSTimestamp
}
type ActiveUser implements User {
id: ID
first: String
last: String
email: String
created: AWSTimestamp
}
type InvitedUser implements User {
id: ID
email: String
created: AWSTimestamp
invitedBy: String
}
type Team @model {
users: [User] @connection
}
似乎我的选择是将@model放在类型上,但是一旦运行 amplify update api,我就会在 Query 上获得单独的 Dynamo 表和查询。
转换器能否支持此处记录的接口:https ://docs.aws.amazon.com/appsync/latest/devguide/interfaces-and-unions.html
我还找到了一些支持票,但想知道是否有任何东西可以启用此功能。以下是我找到的支持票:
解决方案
您仅用于@connection
将两个数据库链接在一起(必须由type
而不是interface
),所以如果您不想这样做,那么只需摆脱@connection
并且 Team 数据库将简单地让用户属于 [User] 类型。我不完全是你想要做的,但我会做类似的事情:
type User @model {
id: ID
first: String!
last: String!
email: String!
created: AWSTimestamp
isActive: boolean
invitedBy: String
team: Team @connection(name: "UserTeamLink")
}
type Team @model {
users: [User!] @connection(name: "UserTeamLink")
}
创建新用户时需要字段 first、last 和 email 的地方,您可以用布尔值区分活动用户,当您查询 User 数据库时,它也会从 Team 数据库中返回 Team 项目(我是猜你想要其他字段,比如团队名称等?),所以当你创建一个 Team 对象时,你会传入 teamUserId(下面没有显示,但在使用放大时创建),这将允许你将新创建的 Team 附加到现有用户或用户组。
推荐阅读
- java - 在休眠中测试延迟加载(带有事务的java spring)
- python - 如何让 python 将瑞典字母(åäö)写入 html 文件?
- typescript - 如何在 Jest 和 TypeScript 中处理未处理的拒绝
- php - Symfony / EasyAdmin 无处可去
- php - 如何使用 yaml 文件中的文本在树枝中获取网站链接
- python-3.x - 如何检测精灵在pygame中遇到了颜色
- flutter - 如何在飞镖中复制数组元素
- r - 如何减小ggplot图形的大小?情节线太多,因此权重太大
- vb.net - 在线 Microsoft Docs Visual Basic.Net
- css - React中的访问按钮原色