Я разработал, как создать нового пользователя и записать базовые поля в DynamoDB, такие как имя пользователя (строка), но я не могу найти способ использовать Union в качестве одного из входных данных.
В моем примере, когда пользователь регистрируется, я хочу знать, какой тип пользователя использует приложение: будь то учитель или ученик (и приложение будет использовать эту информацию для отображения другого пользовательского интерфейса в зависимости оттип пользователя)
Я не нашел примеров этого, так что, может быть, это невозможно? Кто-нибудь делал это? Кто-нибудь знает, можно ли это сделать? Или, может быть, я не должен пытаться сохранить это как Союз ...
Я использую реактивный род, AWS Amplify, AppSync, Cognito.
Моя схема:
type User
id: ID!
name: String!
userTypes: [UserType]
}
union UserType = Teacher | Student
Код сгенерированной мутации:
const registerUser = `mutation RegisterUser($input: CreateUserInput!) {
registerUser(input: $input) {
id
name
createdAt
updatedAt
userTypes {
... on Teacher {
id
name
subjectsTaught
}
... on Student {
id
name
lessons
}
}
}
}
`;
Тогда фактическая реакция родной части:
try {
await API.graphql(graphqlOperation(registerUser,
{ input: { name: "Tamsyn", userTypes: { Student } } } ));
console.log('created user');
} catch (err) {
console.log('error creating user', err);
}