Моделирование данных для веб-сайта электронной коммерции с использованием Amplify + GraphQL + DynamoDB - PullRequest
0 голосов
/ 07 мая 2020

Я использую Amplify из AWS для создания небольшого проекта электронной коммерции, используя React в качестве интерфейса.

Я хотел бы знать, как мне писать типы «Продукт» и «Заказ» в schema, чтобы иметь возможность записывать productId в массив продуктов в таблице Order, когда пользователи завершают покупку.

Мой файл schema.graphql:

type Product @model {
  id: ID!
  name: String!
  price: Int!
  category: String!
  images: [String]!
}

type Order @model {
  id: ID!
  products: [Product] @connection
}

Мой вопрос о последнем В строке, мне нужно определить это соединение [Product] там, или я могу использовать [String] для хранения идентификаторов продуктов в простом строковом массиве?

1 Ответ

1 голос
/ 09 мая 2020

Точка 1: В DynamoDB вам нужно только определить тип данных вашего ключа раздела и ключа сортировки, и это может быть строка, число et c. Для всех остальных атрибутов вам не нужно ничего определять.

Пункт 2: Разработчики DynamoDB предпочитают использовать одну таблицу для каждого приложения, если невозможно управлять данными без нескольких таблиц. . Имея это в виду, ваша таблица может быть примерно такой.

enter image description here

Обратите внимание: Только Id aka partition key и Sk aka столбец ключа сортировки здесь фиксируется, все остальные столбцы могут быть любыми для каждого элемента. В этом вся прелесть DynamoDB. См. этот документ для получения информации о поддерживаемых DynamoDB типах данных.

...