2012-08-23 16 views
10

Próbuję ocenić za pomocą IndexedDB, aby rozwiązać problem offline. Zostałaby zapełniona danymi aktualnie przechowywanymi w bazie danych MongoDB (tak jak jest).Synchronizacja danych serwera MongoDB z lokalnym magazynem IndexedDB

Po zapisaniu danych w IndexedDB, może zostać zmieniony na serwerze MongoDB i muszę propagować te zmiany. Czy istnieje jakakolwiek istniejąca struktura lub biblioteka do robienia czegoś takiego jak ten dla Mongo. Wiem już o CouchDB/PouchDB i nie eksploruję tych dwóch.

+0

należy sprawdzić, czy któryś z kodem z meteor jest istotne. – ranman

+0

Bardzo interesujące, dzięki. Prawdopodobnie rozwiązanie mojego prawdziwego problemu: napisanie aplikacji offline. Powinieneś udzielić tej odpowiedzi, aby móc dać ci punkty, jeśli to rozwiąże mój problem. –

+0

Włącza kompletny scenariusz offline nie jest obsługiwany (logowanie offline + zmiany + synchronizacja z serwerem po powrocie do trybu online): https: // groups. google.com/d/topic/meteor-core/ZVj6RFbKDq0/discussion –

Odpowiedz

0

Nie pracowałem z IndexDB, ale problem projektowania nie jest tak rzadki. Zrozumienie Twojej aplikacji polega na tym, że gdy klient nawiązuje połączenie z MongoDB, wyciągasz zestaw dokumentów do lokalnego przechowywania i rozłączania. Klient może następnie wykonywać czynności lokalnie (bez połączenia z serwerem danych), a następnie wprowadzać zmiany.

Tak jak ja to widzę, że masz na sobie dwa ogólne przypadki:

  1. gdy serwer MongoDB jest aktualizowana i ciągłość przerwy z klientem, klient będzie musiał
    1. ankiety dla dane (timer?) lub
    2. zachować websocket otwarty pozwolić powiadomień wolny przepływ przez rury
  2. , gdy użytkownik musi naciskać zmieniło Dane z powrotem rury
    1. można podłączyć asynchronicznie, sprawdzić zmiany państwowych (rozwiązywanie konfliktów według własnych reguł biznesowych)
    2. mają po stronie serwera (light) interfejs do obsługi konfliktów (w zależności od złożoności aplikacji porównując znaczniki czasowe zmian państwowych MongoDB do aktualizacjach IndexedDB powinno wystarczyć)
+0

Czy znasz wszystkie czynności, które mogły zostać już wprowadzone w tej dziedzinie. Korzystanie z naszych usług jest znacznie prostsze, ponieważ żadne zmiany nie są wprowadzane lokalnie. Użytkownik może jedynie wysyłać żądania zmian, które są przekazywane do serwera i ewentualnie akceptowane i/lub odrzucane. Jeśli zostaną zaakceptowane, muszą zostać przekazane klientowi. Tak więc w tym scenariuszu nigdy nie możemy mieć lokalnych i zdalnych zmian na tym samym obiekcie. –

+0

Coś może być w krainie backbone.js, ale to jest wit z mojej ligi. – patrickgamer

Powiązane problemy