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", но оба варианта кривые, неудобные и вызывают много проблем.

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы
07 апр. 2020, в 13:15
500 руб./в час
07 апр. 2020, в 12:29
5000 руб./за проект
07 апр. 2020, в 12:10
1 руб./за проект