В качестве предисловия к моему ответу я хочу отложить этот высоко оцененный ответ , чтобы напомнить вам, что: "Все ответы на вопросы о том, как хранить связи" многие ко многим "в" NoSQL-способе " сводить к одному и тому же: избыточное хранение данных. "
DynamoDB - это служба базы данных nosql, поэтому этот оператор применяется. Помня об этом, помните, что будет много способов приблизиться к решению ваших вопросов. Когда вы разрабатываете свою модель: «В NoSQL вы не проектируете свою базу данных на основе отношений между сущностями данных. Вы проектируете свою базу данных на основе запросов, которые вы будете выполнять против нее». Ваша модель не будет быть «ORM» обязательно, потому что вы не представляете отношения между данными. Скорее, тип запроса, который вам нужно выполнить, должен быть решающим фактором, определяющим, как вы представляете данные.
Должен ли я хранить объект User или просто имя пользователя?
Это зависит от необходимой вам информации от пользовательского объекта в запросе, который вы выполняете. Если ваш запрос требует всей пользовательской информации, вам следует сохранить полный пользовательский объект. Если в запросе нужно знать только, существует ли пользователь, тогда с именем пользователя все будет в порядке.
Если мне нужно сохранить объект User, как мне сохранить только ключ от объекта User вместо всего объекта?
Этот вопрос немного противоречив, потому что вы хотите сохранить объект User, но затем хотите сохранить только ключ. Кажется, у вас есть пример сохранения только имени пользователя ниже, и я более подробно остановлюсь на этой идее в следующей части вопроса.
Я бы не ожидал, что клиент будет публиковать весь объект, он просто публиковал бы имя пользователя. будет ли смысл приведенный ниже код в контроллере?
Да - если для запроса учетной записи требуется только имя пользователя для представления объекта пользователя. Если для запроса вашей учетной записи нужны другие атрибуты для представления объекта пользователя, вам необходимо решить, как вы будете включать эти атрибуты. Если вы сохраняете несколько пользовательских атрибутов в модели учетной записи, вам следует помнить "В денормализованной базе данных или в NoSQL ответственность за написание кода приложения для предотвращения аномалий (избыточных данных, которые не синхронизированы) ложится на вас. . "
Опять же, я настоятельно рекомендую прочитать Как вы отслеживаете отношения записей в NoSQL? для получения дополнительной информации о записях отношений в среде NoSQL. Принципы одинаковы, независимо от того, какую базу данных NoSQL вы используете (DynamodB, CouchDB, Cassandra и т. Д.) И какой язык кодирования вы используете для взаимодействия с базой данных.