Amazon web services 如何定义GraphQL.schema
我试图使用AWS Amplify创建一个无服务器的react应用程序,并试图找出如何定义 假设使用DynamoDB,基于Graphql的API的数据模型 应如何为以下内容定义Graphql模式:跟踪 针对不同项目类型的运动员的培训课程(培训课程)。每个事件类型定义 船员人数以及舵手是否在场(以划船为例)。实际上有些 会话可能包括cox,因此它应该是一个标志,以指示它是否是cox会话 每次培训课程都会记录课程类型、机组成员名单和 任何测试的结果Amazon web services 如何定义GraphQL.schema,amazon-web-services,graphql,amplify,Amazon Web Services,Graphql,Amplify,我试图使用AWS Amplify创建一个无服务器的react应用程序,并试图找出如何定义 假设使用DynamoDB,基于Graphql的API的数据模型 应如何为以下内容定义Graphql模式:跟踪 针对不同项目类型的运动员的培训课程(培训课程)。每个事件类型定义 船员人数以及舵手是否在场(以划船为例)。实际上有些 会话可能包括cox,因此它应该是一个标志,以指示它是否是cox会话 每次培训课程都会记录课程类型、机组成员名单和 任何测试的结果 enum EventType { EIGHT
enum EventType {
EIGHT
FOUR
FOUR_LW
PAIR
SCULL_QUAD
SCULL_DOUBLE
SCULL_SINGLE
}
enum TestAttrib {
DISTANCE
TIME
SPEED
DIRECTION
}
var eventParms = [
{ id: "1", type: "EIGHT", crewNumber: 8, cox: True },
{ id: "2", type: "FOUR", crewNumber: 4, cox: False },
{ id: "3", type: "FOUR_LW", crewNumber: 4, cox: False },
{ id: "4", type: "PAIR", crewNumber: 2, cox: False },
{ id: "5", type: "SCULL_QUAD", crewNumber: 4, cox: False },
{ id: "6", type: "SCULL_DOUBLE", crewNumber: 2, cox: False },
{ id: "7", type: "SCULL_SINGLE", crewNumber: 1, cox: False }
];
type Member @model
@key(name: "byFirstname", fields: ["firstname", "id"], queryField: "memberByFirstname")
@key(name: "byLastname", fields: ["lastname", "id"], queryField: "memberByLastname")
@key(name: "byDOB", fields: ["dob", "id"], queryField: "memberByDOB")
@key(name: "byAgeGroup", fields: ["ageGroup", "id"], queryField: "memberByDOB")
{
id: ID!
email: String!
firstname: String!
lastname: String!
dob: Date!
ageGroup: String!
}
# record each session with some attributes
type Session @model
@auth(rules: [{ allow: owner, operations: [create] }])
@key(name: "byMemberByDate", fields[""])
{
id: ID!
createdById: Member!
eventType: EventType!
date: String!
crew: [Member]!
cox: Member
testResults: [Test]!
}
type Test @model {
number: Int!
result: [TestAttribute]!
}
type TestAttribute @model {
type: TestAttrib!
value: String!
}
# Sample data shown below
var members = [
{"id": "001",
"email": "a.andersen@gmail.com",
"firstname": "Andrew",
"lastname": "Andersen",
"dob": "2001-01-01",
"ageGroup": "UNDER21"
},
{"id": "002",
"email": "b.barlow@gmail.com",
"firstname": "Barry",
"lastname": "Barlow",
"dob": "2001-02-01",
"ageGroup": "UNDER21"
},
{"id": "003",
"email": "c.christensen@gmail.com",
"firstname": "Chris",
"lastname": "Christensen",
"dob": "2001-04-01",
"ageGroup": "UNDER21"
},
{"id": "004",
"email": "d.donaldson@gmail.com",
"firstname": "David",
"lastname": "Donaldson",
"dob": "2001-05-01",
"ageGroup": "UNDER21"
},
]
var sessions = [
{
"id": "000001",
"createdById": "",
"eventType": "FOUR",
"date": "2020-09-01 16:00:00",
"crew": ["001", "002", "003", "004"],
"cox": null,
"testResults": [
{ "number": 1,
"result": [
{"attrib": "DIRECTION", "value": "Up"},
{"attrib": "DISTANCE", "value": "1000"},
{"attrib": "TIME", "value": "00:01:45"}
]
},
{ "number": 2,
"result": [
{"attrib": "DIRECTION", "value": "Down"},
{"attrib": "DISTANCE", "value": "1000"},
{"attrib": "TIME", "value": "00:01:35"}
]
}
]
},
{
"id": "000002",
"createdById": "",
"eventType": "FOUR",
"date": "2020-09-02 16:00:00",
"crew": ["003", "002", "001", "004"],
"cox": null,
"testResults": [
{ "number": 1,
"result": [
{"attrib": "DIRECTION", "value": "Up"},
{"attrib": "DISTANCE", "value": "1000"},
{"attrib": "TIME", "value": "00:01:49"}
]
},
{ "number": 2,
"result": [
{"attrib": "DIRECTION", "value": "Down"},
{"attrib": "DISTANCE", "value": "1000"},
{"attrib": "TIME", "value": "00:01:36"}
]
}
]
}
]
所需的API包括:
成员-积垢
会议-积垢
理想情况下,我不希望每个嵌套数组都有单独的表,例如测试结果和测试属性值。它们可以作为会话文档的一部分存储,但我仍然希望使用定义的模型对象访问它们——如果可能的话
当与Amplify结合使用时,graphql.schema应该包含什么来实现这一点