如何定义GraphQL.schema

问题描述

我正在尝试使用AWS Amplify创建无服务器反应应用程序,并试图找出如何定义 假设使用DynamoDB的基于Graphql的API的数据模型。

如何为以下内容定义Graphql模式:Track 针对不同事件类型的运动员训练课程(训练课程)。每个事件类型定义 机组人数以及是否有船长(以划船为例)。在实践中一些 会话可能包含考克斯,因此应将其标记为表明它是否为考克斯会话。

每次培训课程都记录有课程类型,机组人员名单和 任何测试的结果。

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",{ id: "4",type: "PAIR",crewNumber: 2,{ id: "5",type: "SCULL_QUAD",{ id: "6",type: "SCULL_DOUBLE",{ 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",queryField: "memberByLastname")
    @key(name: "bydob",fields: ["dob",queryField: "memberBydob")
    @key(name: "byAgeGroup",fields: ["ageGroup",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": "[email protected]","firstname": "Andrew","lastname": "Andersen","dob": "2001-01-01","ageGroup": "UNDER21"
    },{"id": "002","email": "[email protected]","firstname": "Barry","lastname": "Barlow","dob": "2001-02-01",{"id": "003","email": "[email protected]","firstname": "Chris","lastname": "Christensen","dob": "2001-04-01",{"id": "004","email": "[email protected]","firstname": "David","lastname": "Donaldson","dob": "2001-05-01",]

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,"value": "Down"},"value": "00:01:35"}
                ]
            }
            ]
    },{
        "id": "000002","date": "2020-09-02 16:00:00","crew": ["003","001","value": "00:01:49"}
                ]
            },"value": "00:01:36"}
                ]
            }
            ]
    }
]

所需的API包括

会员-CRUD 会话-CRUD

理想情况下,我不想为每个嵌套数组使用单独的表,例如测试结果和测试属性值。它们只能存储为会话文档的一部分,但是我仍然想使用定义的模型对象来访问它们-如果可能的话。

与Amplify结合使用时,graphql.schema应该包含哪些内容

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)