Получавайте известия, когато записът в indexedDB бъде променен в друг раздел

Ако потребител отвори множество екземпляри на уеб приложение в множество раздели, всеки екземпляр може да бъде уведомен за промени в localStorage, които всеки друг екземпляр прави чрез регистриране на storage слушател на събития. След това раздел, който получава такова известие, може да реагира и напр. актуализирайте потребителския интерфейс според промените.

Индексираната база данни не изглежда да предлага подобен удобен механизъм за такива уведомления. Ще трябва ли да се използва localStorage за „изпращане“ на известие до други раздели всеки път, когато се правят промени в индексираната база данни? Единствената друга алтернатива може да бъде анкетирането, което е очевидно по-лошо от storage събития.


person Thomas W    schedule 20.10.2015    source източник


Отговори (2)


Няма текущ API за "наблюдател", дефиниран за индексирана база данни. Той обаче е в списъка със заявки за функции и има подобни предложения от Mozilla и Google.

https://github.com/w3c/IndexedDB/issues/51

Което ще рече: да, трябва да измислите някакъв персонализиран механизъм за комуникация между раздели, като запитване, събития за съхранение, настройка на връзки към MessageChannel (Chrome), BroadcastChannel (Firefox) или използване на Service Worker като реле между клиенти.


БЪЛГАРСКИ НОВИНИ!

Chrome има експериментален API за индексирани DB Observers. Трябва да стартирате chrome с --enable-experimental-web-platform-features, за да го използвате, така че все още не е полезен в производството. Ще се радваме да получим отзиви за него – подайте бъгове в хранилището на github.

person Joshua Bell    schedule 21.10.2015
comment
Някакви новини по въпроса? Стандартна писта и т.н.? На какво ниво вероятно ще са наблюдателите? - person Leo; 16.12.2017
comment
Няма новини. W3C Tag предостави някои отзиви относно дизайна на API, който ние (Chrome) трябва да включим и да получим обратна връзка от разработчиците. - person Joshua Bell; 18.12.2017

Актуализация

  1. Dexie вече има добавка за Observables, в случай че започнете с нов проект: https://dexie.org/docs/Observable/Dexie.Observable
  2. Олег направи солидна кука върху опаковката за съхранение на йони. Но това може да се създаде за всяка локална библиотека за съхранение. Солидно инженерство. https://medium.com/@OlegVaraksin/how-to-make-ionic-storage-reactive-acdd8996f1e6
person feder    schedule 07.11.2019
comment
Някаква идея как го прилага Dexie.Observable? - person RushPL; 06.05.2020
comment
@RushPL - От бърз преглед на внедряването изглежда, че Dexie.Observable използва LocalStorage (което има вградени събития за уведомяване за промени в други раздели), за да изпраща съобщения за своите промени в IndexedDB. - person Josh Kelley; 16.04.2021