2017-06-16 23 views
1

我正在創建一個CouchApp並對遠程數據庫和創建PouchDB對象有疑問。PouchDB相對遠程數據庫(使用CouchDB/Cloudant)

  • 的CouchApp可從HTPS://subdomain.website.com/
  • 的CouchDB實例是HTPS://username.cloudant.com/database
  • 我在使用一個重寫規則數據庫
  • 有來自subdomain.website.com一個虛擬主機來username.cloudant.com/database/_design/client/_rewrite
  • 我沒有使用複製,只有直接連接

我目前使用以下命令創建一個新的PouchDB對象:

var db = new PouchDB('htps://username.cloudant.com/database');

但我寧願它實例爲:

變種DB =新PouchDB( '/數據庫');

變種分貝=新PouchDB( '數據庫');

我的猜測是PouchDB將此視爲本地數據庫而不是遠程數據庫。我的想法是否正確,我怎樣才能得到我想要的結果?我想剝去URL的主機名,因爲我想保留所有內容並將其複製到其他服務器上。

回答

2

既然你定義的虛擬主機,您可以使用以下解決方法mabye:

var url = new URL(window.location.href); 
var host = url.host; 

var db = new PouchDB(host+"/database"); 
我不使用本地數據庫,也沒有複製的數據集是相當大的
+0

良好的開箱思維!這解決了我的問題。我確實添加了一個額外的重寫規則來讓虛擬主機重新路由工作:從「:」/ database/*「, 」到「:」../../../database/*「 」的「{ 」 – bsmulders

0

我目前創建使用新PouchDB對象:

變種分貝=新PouchDB( 'HTPS://username.cloudant.com/database');

但我寧願它實例爲:

變種DB =新PouchDB( '數據庫');

那麼,這不是個人喜好的問題,您可能需要遠程數據庫,本地數據庫或兩者。

基本上,開發人員可能需要一個遠程數據庫:

const remoteDB=new PouchDB('https://username.cloudant.com/database') 

此外,您可能需要一個本地數據庫:

const localDB=new PouchDB('localDatabase') 

然後,也許你可能需要sync遠程和本地數據庫。其實,syncing就是PouchDB真的在處發光。例如,同步可能就像這樣:

localDB.sync(remoteDB,{live:true,retry:true}).on('complete',()=>{ 
    console.log('sync done') 
}).on('change',change=>{ 
    console.log('Something changed -> ',change) 
}).on('paused',info=>{ 
    console.log('Sync paused -> ',info) 
}).on('active',info=>{ 
    console.log('Sync is active again -> ',info) 
}).on('error',err=>{ 
    throw new Error(err) 
}) 

您可以read on獲取更多信息。

+0

。遠程數據集是隻讀的,我只使用遠程實例實例化PouchDB。之後,我使用alldocs來查詢數據庫。 – bsmulders