2016-12-26 21 views
0

私は単純なPouchDBインスタンスをローカルブラウザ用とリモート用に用意しています。私はそれがビューとして保存する同期を発行するときに、フィルタを取るデザイン文書を持っています。私はその下にそれがPouchDBからCouchDBへの同期はビューとしてフィルタを保存します

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

だから私のクライアントスクリプトで以下のように書かれているビュー

localDB.sync(remoteDB) 

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

として保存し実行すると

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

は、なぜ私は、フィルタを見ることができませんCouchDBで表示したときに私の文書に表示されますか?

+0

あなたの質問は何ですか? – JasonSmith

+0

クール!私が正しく理解すれば、私は答えようとします。 – JasonSmith

答えて

0

2つの異なる文書を保存しています.1つはビュー(CouchDBの場合)と1つはフィルター(PouchDBの場合)です。

同じidで内容が異なるドキュメントを保存すると、同期(複製)する際に競合が発生します。あなたが設計文書と衝突している場合、基本的に1つのリビジョン(かなり自由に選んだリビジョン)が "生きている"ものになり、もう誰も気にしない古いGitブランチのようなものは不活性になります。

つまり、私が正しく理解していれば、おそらく同じ文書をCou​​chDBとPouchDBに保存しようとするべきでしょう。 (これを行う簡単な方法は、PouchDBに文書を保存してからCouchDBに複製することです)。

関連する問題