在使用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,我就会在查询上得到单独的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
我认为您可以将公共字段保存在User
中,将额外的信息保存在单独的类型中。不确定这是否是最佳实践,但它应该适用于此场景
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"])
}
您只需使用@connection
将两个数据库链接在一起(必须由类型
而不是接口
创建),因此如果您不想这样做,只需去掉@connection
,团队数据库的用户类型将仅为[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,您可以使用布尔值区分活动用户,查询用户数据库时,它也会从团队数据库返回团队项目(我猜您需要其他字段,如团队名称等?),因此,当您创建团队对象时,您将传入teamUserId(下面未显示,但在使用amplify时创建),该ID将允许您将新创建的团队附加到现有用户或用户组。
我在另一个人推送的AWS AppSync上有一个GraphQL API,我想连接到它并在我的Android应用程序中获取数据。根据AWS文档,要将API与我的应用程序集成,我应该执行以下3个命令: 之后,我需要基于graphql模式生成Java类。我执行,但收到错误“未配置AppSync API。请添加API”。如果执行,我会得到“您的项目中已经有一个AppSync api。请使用“放大更新api
我一直在尝试使用AWS Amplify来生成GraphQLAPI和后端。我可以使用引导模式创建创建一个工作后端。我选择了Todo示例。我可以从Android Studio内置的应用程序中调用它。查询和突变工作正常。每当我使用Android Studio查看模式时。graphql在放大/backend/api/project/(其中project是项目的名称)中,我在尝试重新定义Todo和使用未声明
以下是AWS Amplify GraphQL客户端的官方文档:https://aws-amplify.github.io/amplify-js/media/api_guide.html.本节提供了基本输入的示例。 对于AWS Mobile Appsync SDK For Javascript,这里有一个详细的文档:https://docs.aws.amazon.com/appsync/latest
我正在尝试使用 graphql 将数据插入/更改为动态,请参阅下图在插入数据时出错。如果在创建架构或更改数据时存在错误,我会感到困惑。该表是使用放大创建的 这是模式脚本
Apollo AWS Lambda with GraphQL subscriptions ⚠️ This documentation is currently for 1.0.0-alpha.X package which supports only subscriptions-transport-ws and drops the legacy protocol and client suppor
当通过Amplify CLI初始化新的GraphQL后端时,示例模式使用@Model注释定义多个类型。比如说... 推送时,将创建多个DynamoDB表(每个模型一个)。因此在本例中,创建了三个单独的DynamoDB表(blog、post和Comments) 在我们的例子中,我们有一个模型,我们将有20个左右的小集合与用户关联。当感觉这些小集合都属于单个表中的用户对象时,我对不得不管理20个不同的