2017-05-10 20 views
1

我有一個服務器端Web應用程序,頂部有一個REST風格的Web API,客戶端Web應用程序與它交談。如果服務器(或互聯網)不可用,我想在webapp中實現離線存儲和功能。在客戶端實現PouchDB是否可行,並使其與我寧靜的Web服務而不是CouchDB數據庫同步? web服務需要遵循什麼標準才能與couchdb/pouchdb兼容?有沒有人有任何關於這個或關於如何以不同的方式做的建議,如果有更好的方法(我寧願不將我的後端從postgresql/python切換到couchdb,如果我可以)?將PouchDB用作常規RESTful web服務的離線客戶端臨時存儲

+1

PouchDB實現基於REST的[CouchDB複製協議](http://docs.couchdb.org/en/2.0.0/replication/protocol.html)。您可能也需要實施它。另請參閱[PouchDB文檔](https://pouchdb.com/guides/#couchbase-couchdb-couch-what)... – Phonolog

+1

感謝您的信息。複製協議看起來不太複雜,但實現起來可能還有很多工作要做。也許一個更好的主意可能是在客戶端只有一個pouchdb本地存儲,而webapp從REST webservice緩存數據並在沒有可用連接的情況下將數據存儲在本地。只要互聯網/服務器恢復在線狀態,它就會將其發送回其餘的web服務。 –

回答

1

是否可以在客戶端實現PouchDB,並讓它與我寧靜的webservice而不是CouchDB數據庫同步?

可能不是。但這取決於你對「可行」的定義。

webservice需要遵循什麼標準才能與couchdb/pouchdb兼容?

它需要實現CouchDB Replication protocol

有沒有人有任何關於這個或關於如何有更好的方式做不同的例子?

你有兩個選擇,這真的可以歸結爲同一件事:

  1. 可以實現現有的複製協議。
  2. 您可以編寫自己的複製協議。

底線是:您需要一個複製協議,您的客戶端和服務器都會說話。這不是一件容易的事。複製很難。

PouchDB + CouchDB爲您解決了這個難題,但價格昂貴 - 它只能複製JSON數據。當然,你可以將其他數據轉化爲JSON文檔,但是你又要寫一個新的協議。

正如您在評論中所建議的,您可以使用PouchDB僅用於本地存儲,並進行自己的複製。當然,那很好。雖然如果你不使用PouchDB的複製,它可能不是最適合你的本地存儲解決方案(但它仍然是一個很好的解決方案)。