2016-12-26 65 views
0

我有一個用於本地瀏覽器和一個遠程的簡單PouchDB實例。我有一個設計文檔需要過濾器,當我發出一個同步它保存爲視圖。PouchDB到CouchDB同步將過濾器保存爲視圖

var localDB = new PouchDB('mydb'); 
var remoteDB = new PouchDB('http://anna:[email protected]:5984/db'); 

當我執行以下保存爲一個視圖

localDB.sync(remoteDB) 

{ 
    "_id": "_design/sync", 
    "_rev": "2-f6db221d90157a99f4e6e9e6e27ffe85", 
    "views": { 
     "by_user": { 
      "map": "function (doc) {\n emit(doc._id, 1);\n}" 
     } 
    } 
} 

當它被寫入如下我的客戶端腳本

localDB.put({ 
     _id : '_design/sync', 
     filters: { 
      by_user : function(doc, req) { 
       return doc._id.indexOf(req.query.user) > 0; 
      }.toString() 
     } 
    }).then().catch(function(err) {}); 

那麼,爲什麼我不能看到過濾器在我的文檔在CouchDB中查看?

+0

您的問題是什麼? – JasonSmith

+0

酷!如果我理解正確,我會盡力回答。 – JasonSmith

回答

0

您正在保存兩個不同的文檔,一個帶有視圖(在CouchDB中),另一個帶有過濾器(在PouchDB中)。

經驗法則,如果您存儲具有相同標識但內容不同的文檔,則在同步(複製)時會發生衝突。如果你與設計文檔有衝突,那麼基本上一個版本(幾乎任意選擇)將是「現場」版本,其中一個將是惰性的,有點像舊Git分支,沒有人關心。換句話說(如果我理解正確),您應該嘗試在CouchDB和PouchDB中存儲相同的文檔。 (一個簡單的方法是將文檔存儲在PouchDB上,然後將其複製到CouchDB,反之亦然。)