下面是我學到的知識,因爲我確定了與當前幾個應用程序項目一起前進的最佳方式。
異步存儲(「內置」反應母語)
我用AsyncStorage一個在生產應用。存儲位於設備本地,未加密(如另一個答案中提到的),如果刪除應用程序則會消失,但應作爲設備備份的一部分保存並在升級過程中保留(本機升級ala TestFlight和通過CodePush升級代碼)。
結論:本地存儲;您提供自己的同步/備份解決方案。
SQLite的
其他項目我已經用過的sqlite3的應用程序存儲工作。這爲您提供了一種類似於SQL的體驗,可壓縮的數據庫也可以在設備之間傳輸。我還沒有將它們同步到後端的經驗,但我想有各種各樣的庫存在。有用於連接到SQLite的RN庫。
數據以傳統數據庫格式存儲,數據庫,表格,鍵,索引等全部以二進制格式保存到磁盤。可以通過命令行或具有SQLite驅動程序的應用程序直接訪問數據。
結論:本地存儲;您提供同步和備份。
火力地堡
火力地堡計劃書,除其他事項外,有一個JSON文檔存儲(如MongoDB中)一起實時NoSQL數據庫意味着保持1到同步客戶端的n個。該文檔討論脫機持久性,但僅限於本機代碼(Swift/Obj-C,Java)。 Google自己的JavaScript選項(「Web」)由React Native使用,不提供緩存存儲選項(請參閱下面的2/18更新)。該庫的編寫假定網絡瀏覽器即將連接,因此將存在半持久連接。您可能可以編寫本地緩存機制來補充Firebase存儲調用,也可以在本機庫和React Native之間編寫橋接。
[Update 2/2018]我自此發現React Native Firebase,它爲本機iOS和Android庫提供兼容的JavaScript接口(做Google可能應該做的事情),爲您提供本地庫的所有優點React Native支持的獎金。隨着Google在實時數據庫旁引入JSON文檔存儲,我將爲Firebase再次尋找我計劃構建的一些實時應用程序。
實時數據庫存儲爲類似JSON的樹,您可以在網站上進行編輯並導入/導出非常簡單。
結論:通過react-native-firebase,RN獲得與Swift和Java相同的優勢。 [/ update]適合聯網設備。低利用率的低成本。與其他Google雲產品很好地結合在一起。數據隨時可見並可從其界面進行編輯。
境界
另外一個實時對象存儲與自動的網絡同步。他們吹噓自己是「設備第一」的演示視頻顯示設備如何處理零星的或有損網絡連接。
他們提供你自己的服務器上或在類似AWS或者Azure的雲解決方案託管對象存儲的免費版本。您還可以創建在內存中存儲了不與設備,僅設備存儲了不與服務器同步上漲持續下去,只讀服務器存儲,並通過一個或多個設備同步的完全讀寫選項。他們擁有專業和企業選項,比Firebase每月的前期花費更多。
與火力地堡,所有領域能力支持原生的反應和Xamarin,就像它們在斯威夫特/ ObjC /爪哇(本機)應用程序。
你的數據被拴在你的代碼的對象。因爲它們是定義的對象,所以你確實有一個模式,並且版本控制對於代碼的完整性來說是必須的。通過Realm提供的GUI工具可以訪問直接訪問。設備上的數據文件是跨平臺兼容的。
結論:設備先用免費和付費計劃可選的同步。 React Native支持所有功能。水平縮放比Firebase更昂貴。
的iCloud
老實說,我沒有做了很多與此一打,但在不久的將來會做如此。
如果你有一個使用CloudKit本機應用程序,你可以使用CloudKit JS從一個Web應用程序連接到您的應用程序的容器(或者,在我們的情況下,作出反應母語)。在這種情況下,您可能會擁有原生iOS應用和React Native Android應用。
像境界,這在本地存儲數據,並同步到iCloud可能的情況下。有爲您的應用程序和每個客戶的私人商店公共商店。客戶甚至可以選擇與其他用戶共享一些商店或對象。
我不知道它是多麼容易訪問原始數據;這些模式可以在Apple的網站上設置。
結論:大蘋果,有針對性的應用程序。
Couchbase
大牌,很多背後的大公司。有一個社區版和企業版與標準的支持成本。
他們已經有了一個教程在其網站上的掛鉤東西反應本土。我也沒有花太多時間在這個上,但它在功能方面似乎是Realm的一個可行的替代方案。我不知道在您的應用程序或您構建的任何API之外獲取數據是多麼容易。
[編輯:研究發現,談論Couchbase和CouchDB的一個較舊的鏈接,CouchDB的可能是又一個值得考慮的選擇。這兩者歷史上相關但目前完全不同的產品。見this comparison]
結論:看起來有類似的功能,境界。可以是僅限設備或同步。我需要嘗試一下。
MongoDB的
我使用這個服務器端的一塊使用AsyncStorage本地應用程序。我喜歡將所有東西都存儲爲JSON對象,使得傳輸到客戶端設備非常簡單。在我的使用案例中,它用作電視指南數據的上游提供商與我的客戶端設備之間的緩存。
對於數據沒有硬架構,就像架構一樣,所以每個對象都被存儲爲一個容易搜索,可過濾等的「文檔」。類似的JSON對象可以有額外的(但不同的)屬性或子對象,爲您構建對象/數據提供了很大的靈活性。
我還沒有嘗試過任何客戶端到服務器的同步功能,我也沒有使用它嵌入。 React本地代碼MongoDB確實存在。
結論:本地只有NoSQL解決方案,沒有像Realm或Firebase這樣明顯的同步選項。
[編輯]我花了一些時間與境界,因爲我最初寫這個。我喜歡我不需要編寫API來同步應用程序和服務器之間的數據,類似於Firebase。無服務器功能也看起來對這兩者非常有用,限制了我必須編寫的後端代碼的數量。
我喜歡MongoDB數據存儲的靈活性,因此這正成爲我對基於Web和其他需要連接的應用程序的服務器端的選擇。
我發現RESTHeart,它創建了一個非常簡單的,可擴展的RESTful API到MongoDB。構建一個讀取JSON對象並將其寫入RESTHeart的React(Native)組件應該不會太困難,而RESTHeart會依次將這些對象傳遞給MongoDB。
[編輯]我添加了有關數據如何存儲的信息。在開發和測試過程中,如果您需要調整和測試數據,有時候瞭解您可能需要做多少工作非常重要。
如果你想存儲敏感數據,你可以看看這個:https://stackoverflow.com/questions/45547657/what-is-the-best-way-to-store-private-data-in -react-native –