RxDB z React Native
Ponieważ w naszym codziennym życiu coraz bardziej polegamy na technologii, zapotrzebowanie na innowacyjne rozwiązania, które płynnie integrują się z naszymi cyfrowymi doświadczeniami, nigdy nie było większe. Od aplikacji mobilnych po aplikacje internetowe i wszystko pomiędzy, potrzeba niezawodnych, wydajnych i skalowalnych baz danych staje się coraz bardziej widoczna.
RxDB oferuje moduły do replikacji w czasie rzeczywistym z dowolnym punktem końcowym zgodnym z bazą danych, a także z określonymi punktami końcowymi GraphQL, w celu replikacji danych między Twoimi klientami a serwerem.
Co to jest RxDB?
RxDB to skrót od Reactive D ata b as, bazy danych NoSQL dla aplikacji JavaScript, takich jak strony internetowe, aplikacje mobilne, electro-apps, aplikacje internetowe i node.js.
Wejdź do RxDB — reaktywnej bazy danych zaprojektowanej specjalnie dla aplikacji JavaScript. Z naciskiem na offlinemożliwości i cross-platformkompatybilność.
RxDB szybko staje się popularnym rozwiązaniem dla programistów, którzy chcą usprawnić swoje przepływy pracy i zapewnić użytkownikom jak najlepsze wrażenia. Niezależnie od tego, czy tworzysz nową aplikację mobilną, czy modernizujesz istniejącą, RxDB może być brakującym elementem układanki, którego szukałeś.
W RxDB możesz zapytać o bieżący stan i zasubskrybować wszystkie zmiany stanu, takie jak wynik zapytania lub nawet pojedyncze pole dokumentu, jeśli jest reaktywne. Działa to dobrze w przypadku UI-based real-timeaplikacji, ponieważ jest proste w tworzeniu i ma doskonałe zalety wydajności bez żadnych plików backend.
Twoje kolekcje są zawarte w RxDatabase-Object, który zarządza również synchronizacją zdarzeń zmian. RxDB może być wykorzystywane wyłącznie po stronie klienta.
Wtyczka prymitywów replikacji umożliwia również tworzenie oryginalnych replik, które działają z dowolnym protokołem, w tym REST, gniazdami sieciowymi itp.
Zobaczmy teraz, jakie są najważniejsze cechy RxDB?
Offline-firstbaza danych, która będzie synchronizowana z bazą danych po stronie serwera i pozwoli Twojej aplikacji nadal działać, gdy użytkownicy nie będą mieli internetu.- Kompatybilny z PouchDB, CouchDB i IBM Cloudant. Jest też wtyczka do
GraphQL replication. Encryptionpojedynczych pól danych w celu ochrony danych użytkownika.- Obsługuje
TypeScriptszybkie i bezpieczne kodowanie. Reactiveobsługa danych w oparciu o RxJS (pozwalająca na obsługę zdarzeń asynchronicznych jako kolekcji, takich jak operacje na mapach, filtrach i redukcjach)Platform-SupportRxDB jest stworzony tak, że można go używaćthe same codew przeglądarkach, node.js, react-native itp.- RxDB będzie działać jako nasza baza danych po stronie klienta.
- RxDB reaktywnie obsługuje dane, więc zależy od rxjs .
Zaczynając od przykładu Todo
Najpierw utwórz projekt React Native, uruchamiając to polecenie:
npx react-native init RxDBProject
Krok 1: Zainstaluj zależności ⤵️
Następnie musisz zainstalować powyższe pakiety w swoim projekcie React Native.
npm install rxdb --save
# peerDependencies
npm install rxjs --save
Dla swojej bazy danych utwórz plik o nazwie InitializedDB.tsxlub innej odpowiedniej nazwie. W ten sposób budujemy bazę danych, podając nazwę, adapter do przechowywania i hasło (które musi mieć co najmniej 8 znaków i być opcjonalne), jak pokazano na poniższym obrazku:
Krok 3 : Utwórz schemat dla kolekcji bazy danych
Aby upewnić się, że dane Twojego dokumentu zawsze pasują do schematu JSON dostarczonego przez Twoje repozytorium RxCollection, możesz skorzystać z jednej z kilku implementacji walidacji oferowanych przez RxDB.
Poniższe TodoSchemasłuży jako definicja a Todo collectionw tym schemacie:
- Schemat
version numberto Zero (0). - Pole
primary keyzawiera nazwę pola właściwości, która będzie używana jako klucz podstawowy dla całej kolekcji. - Klucz podstawowy to unikalny, zindeksowany, wymagany ciąg, którego można użyć do znalezienia pojedynczego dokumentu. na przykład identyfikator, tytuł, imię itp.
- Poniższy schemat ma dwie właściwości typu
titleidescription,flagędonedla todo są zakończone lub nie. - Pierwsza właściwość
titlejest kluczem podstawowym i reprezentuje datę wstawienia wiadomości w milisekundach. - Możesz również dodać wymaganą właściwość do sprawdzania poprawności do schematu.
Krok 4: Utwórz kolekcję ze schematem i wstaw dokument
Pobierz istniejącą kolekcję z bazy danych i wywołaj nazwę kolekcji bezpośrednio w bazie danych, jak w poniższym przykładzie.
// create collections
await db.addCollections({
[todoCollectionName]: {
schema: TodoSchema,
},
});
// insert a document
await db[todoCollectionName].insert({
title: 'Antibiotics',
description: 'Bring Medicine from store',
done: 'true',
});
Zapytanie pozwala znaleźć dokumenty w Twojej kolekcji. Podobnie jak większość innych baz danych NoSQL, RxDB korzysta z wtyczki. mango-query-syntax.Możliwe jest również użycie metod połączonych z query-builderwtyczką. Aby utworzyć podstawowy RxQuery, wywołaj .find()metodę w kolekcji i wstaw selektory. Zbiorem wyników zwykłych zapytań jest tablica dokumentów.
W powyższym kodzie wprowadzimy a titlei a descriptionz insert()funkcją dla listy zadań do wyjścia, jak widać na powyższym obrazku. Dodatkowo możemy usunąć dokument prostym kliknięciem na przycisk usuwania z remove()funkcją.
findone()zlokalizuje dane zgodnie z tytułem i opisem, pobierze je i usunie z bazy danych. Dodano również funkcję aktualizacji dla Todo, aby zmienić opis i tytuł za pomocą upsert().
Możesz również zajrzeć, RxQueryaby dowiedzieć się więcej na ten temat. Tutaj możesz zobaczyć wyniki dodawania, usuwania i edytowania zadań Todo:
Wadą trybu offline najpierw
- Działa tylko z
small datasets. - Pamięć przeglądarki nie jest trwała.
Deterministic conflictRozwiązanie jest powszechną strategią stosowaną w bazach danych działających w trybie offline w celu rozwiązywania konfliktów, które mogą powstać, gdy wielu użytkowników modyfikuje ten sam dokument w trybie offline.- Podejście to polega na przechowywaniu obu sprzecznych wersji dokumentu i określaniu zwycięzcy poprzez porównanie ich skrótów. Zwycięski dokument jest następnie zwracany po zapytaniu o dokument.
- Chociaż deterministyczne rozwiązywanie konfliktów może być odpowiednie w przypadkach użycia, w których konflikty są rzadkie, a pominięcie jednej z powodujących konflikt zmian nie jest krytyczne, może nie być najlepszym podejściem w przypadku bardziej złożonych lub ważnych aplikacji.
- musisz . Podczas tworzenia aplikacji prędzej czy później chcesz zmienić układ danych . Chcesz dodać nowe pola do dokumentów lub zmienić ich format. Musisz więc zaktualizować schemat bazy danych, a także przeprowadzić migrację przechowywanych dokumentów.
migrate the client database - Wydajność nie jest natywna: podczas tworzenia pierwszej aplikacji offline opartej na sieci Web nie można przechowywać danych bezpośrednio w systemie plików użytkownika. W rzeczywistości istnieje wiele warstw między kodem JavaScript a systemem plików systemu operacyjnego.
Powyższy kod źródłowy znajdziesz w repozytorium GitHub
Wniosek
Funkcje RxDB znacznie wykraczają poza to, co zostało tutaj omówione, w tym encryption, middleware hooks,i atomic updateoperacje.
Funkcjonalność tej aplikacji można zwiększyć, dodając, edytując i aktualizując funkcje oraz synchronizując dane z serwerem lub . IBM CloudantCouchDB
Możesz również sprawdzić oficjalne repozytorium RxDB GitHub w celu uzyskania dalszych informacji.
Aby dowiedzieć się więcej o inżynierii w Simform, sprawdź resztę naszego Bloga Inżynierskiego i odwiedź naszą stronę Simform . Aby wyświetlić otwarte możliwości i aplikować na nie, odwiedź naszą stronę Kariera .

![Czym w ogóle jest lista połączona? [Część 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































