REST API для обновления MongoDB между многими - PullRequest
0 голосов
/ 28 января 2020

У нас есть две модели mongodb со многими отношениями - Изображения и Статьи .

Изображение может использоваться в любой статье, а статья может есть какие-либо изображения. С точки зрения пользовательского интерфейса, пользователь захочет увидеть два вида

  1. Просмотр статьи - статья и изображения, используемые в статье
  2. Просмотр изображения - изображение и все статьи, которые изображение использовалось в.

По этой причине я рассматриваю возможность использования двухсторонних ссылок с идентификаторами.

Пример схемы:

Изображения

_id: ObjectId(''),
url: '',
description: 'some description',
keywords: ['some', keywords']
articles: [] // array of references to image id's

Статьи

_id: ObjectId(''),
body: 'text body',
title: 'some title',
images: [] // array of references to image id's

Мой вопрос заключается в следующем:

Мне нужно разработать REST API для установления sh отношений. Например,

POST /articles/{id}/images // add an image to an article

В коде приложения для вышеуказанного API, если бы мне пришлось обновить как документы image, так и article, мне пришлось бы использовать транзакции. Является ли этот дизайн нормальным?

Другие варианты, о которых я могу подумать:

  1. Пусть клиент вызывает два API (другой связывает статью с изображением)
  2. Используйте шину сообщений, чтобы уведомить изображения о том, что статья использовала ее, и чтобы приложение обрабатывало ее, обновляя документ image.
  3. Есть третья модель для обработки ссылок. Т.е. Usages коллекция

Я не могу думать ни о каких других вариантах или о том, что является лучшей практикой. Во многих руководствах по разработке схем mongodb говорится о двухсторонних ссылках, но не упоминается, как они обрабатываются с точки зрения разработки API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...