首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS放大与GraphQL接口

AWS放大与GraphQL接口
EN

Stack Overflow用户
提问于 2020-03-20 07:25:18
回答 2查看 715关注 0票数 2

您将如何处理接口并使用它们进行数据模型中的连接,使用AWS放大器模型转换?

代码语言:javascript
复制
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放在类型上,但一旦运行separate api,就会在查询中得到单独的Dynamo表和查询。

变压器能支持这里记录的接口吗:https://docs.aws.amazon.com/appsync/latest/devguide/interfaces-and-unions.html

我还发现了一些支持票,但我想知道是否有什么东西支持这个功能。这是我找到的支持票:

https://github.com/aws-amplify/amplify-cli/issues/1037

https://github.com/aws-amplify/amplify-cli/issues/202

EN

回答 2

Stack Overflow用户

发布于 2020-06-01 03:21:01

您只使用@connection将两个数据库连接在一起(这两个数据库必须由type而不是interface创建),所以如果您不想这样做,那么只需去掉@connection,团队数据库就可以让用户类型为User。我不完全是你想做的,但我会做这样的事情:

代码语言:javascript
复制
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")
}

在创建新用户时需要第一、最后和电子邮件字段的地方,您可以使用布尔值区分活动用户,当查询用户数据库时,它也会从团队数据库返回团队项(我猜您需要其他字段,如Team name等),所以当您创建一个Team对象时,您可以在teamUserId中传递一个team对象(下面没有显示,但在使用放大时创建),这将允许您将新创建的团队附加到现有的用户或用户组中。

票数 1
EN

Stack Overflow用户

发布于 2020-09-24 12:34:14

我认为您可以将公共字段保留在User中,并将额外的信息单独输入。不确定这是否是最佳实践,但它应该适用于这种情况。

代码语言:javascript
复制
enum UserType {
  ACTIVE
  INVITED
}

type User @model @key(name:"byTeam", fields:["teamID"]){
  id: ID!
  teamID: ID!
  email: String
  created: AWSTimestamp
  type: UserType
  activeUserInfo: ActiveUserInfo @connection(fields:["id"])
  invitedUserInfo: InvitedUserInfo @connection(fields:["id"])

}

type ActiveUserInfo @key(fields:["userID"]){
  userID: ID!
  first: String
  last: String
}

type InvitedUserInfo @key(fields:["userID"]){
  userID: ID!
  invitedBy: String
}

type Team @model {
  id:ID!
  users: [User!] @connection(keyName:"byTeam", fields:["id"])
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60770088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档