devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻

Как реализовать отношение многие ко многим в хранилище расширения браузера?

Я создаю расширение, которое будет позволять ставить теги на комментарии. В SQL БД я бы сделал это так:

comments:
  id int
  text string

tags:
  id int
  tag_name string

comment_tags:
  comment_id int
  tag_id int


Но WebExtensions API предоставляет только key-value(https://developer.mozilla.org/en-US/docs/Mozilla/A...

Можно сделать так:

{
  "comment_1": { comment data },
  "comment_2": { comment data },
  "tag_1": { tag data },
  "tag_2": { tag data },
}


и хранить отношения либо в comment и tag data, либо отдельными ключами вроде "comment_tags_1_2", но оба варианта кривые, неудобные и вызывают много проблем.

Какие есть удобные варианты решить данную задачу? Хранить на бэкенде не вариант.
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 3
@rPman
key-value это обычно документ-ориентированный подход, т.е. когда вся необходимая информация хранится в виде объекта.

В вашем случае это будет
comment_1:{data:comment_data,tags:[tag_1,tag_2,tag_3]}

справочники храните как отдельные объекты
tag_1:tag_data

И не заводите прослойку из id, это лишнее,.. точнее старайтесь чтобы идентификатором была сама строка (если она уникальная) тогда вам не придется городить целый уровень абстракций.

Да, в документ-ориентированных базах сложнее контролировать целостность, самим надо заниматься индексами и прочее.. такова селяви
Ответ написан
@AlexanderMi
Software Developer
Если говорить о гугл-хроме, то почему бы не использовать WebSQL?
Ответ написан
devalone
@devalone Автор вопроса
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
Кароч, пока начал писать на IndexedDB, а именно используя обёртку PouchDB, там есть индексы, отношения многие ко многим и прочие полезные плюшки. Проблема только, что нет адекватной синхронизации(только если свой сервер поднимать).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы