2017-08-25 15 views
0

EIDT:この問題はAngular2の問題であり、次のzone.jsアップデートで解決する必要があります。一時的な修正については、https://github.com/angular/zone.js/issues/886とСтефанСпасовAnswerを参照してください。PouchDB再帰が多すぎる - リモート接続でのStackoverflow


私はクライアントのpouchDBとサーバーcouchDBを同期しようとしています。私Angular2アプリからpouchDBにアクセスするには

私はjavascriptのインタフェースを書かれている:

var db; 
var remoteDb; 

function LocalDb() { 
    db = new PouchDB('test', {storage:'persistent'}); 
}; 

function RemoteDb(url) { 
    remoteDb = new PouchDB(url); 
}; 

function sync() { 
    db.sync(remoteDb); 
}; 

function addTest() { 
    var test = { 
    title: 'ABC', 
    completed: false 
    }; 

    db.post(test); 
}; 

私は読みやすくするために、すべてのコールバックを削除しました。 pouchdbを実行してインストールしましたnpm install pouchdb

さらに、<script src="../node_modules/pouchdb/dist/pouchdb.min.js"></script>をindex.htmlに追加してpouchDBソースを追加しました。ので、私はそれを私はすべてのJavaScript関数は、ボタンによって呼び出される資産にpouchDbのdistのフォルダをコピーして、そのよう<script src="assets/dist/pouchdb.min.js"></script>

pouchDBを実施し、そのように実装することによって得た404エラーの

私が「get localdb」と「get remotedb」ボタンを押すと、everythigが機能します。現時点では、同期ボタンを押して、私は多くの[email protected]://localhost:4200/polyfills.bundle.js:3614:1を取得し、Firefoxでは再帰エラーが多すぎます。 Chromeは、最大呼び出しスタックサイズを超えたことを通知します。

ご協力いただければ幸いです。


編集... [OK]を、今私はそれが単一の静的なHTMLファイルを作成することにより、作業とEXCACTLY同じスクリプトを使用して、ブラウザでそれを実行してしまった...完全に混乱している:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>RemoteCouch</title> 
    <base href="/"> 

    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="icon" type="image/x-icon" href="favicon.ico"> 
</head> 
<body> 
    <h3>Hello World</h3> 

    <script type="text/javascript" src="PATH/pouchdb.min.js"></script> 
    <script> 
     var db = new PouchDB('new'); 

     db.post({ 
      name: 'David', 
      age: 69 
     }); 

     db.changes().on('change', function() { 
      console.log('Ch-Ch-Changes'); 
     }); 

     db.replicate.to('http://10.20.20.37:5984/new'); 
    </script> 
</body> 
</html> 

私はtapio/live-serverでこのファイルをホストしていました。これは角度問題かもしれません、または私はちょうど何か間違っていました。私は新しいプロジェクトを作っただけでもう一つの試みのために


は、ここで説明 https://github.com/nolanlawson/pouchdb-find/issues/201ようpouchdb追加され、純粋なtypescriptですで同じテストをしましたが、excpectedとしてエラーが依然として存在します。

+0

[OK]を、私はいくつかのより多くのテストを実行し、同期が唯一の問題であるように私は、DBのデータを持っている場合、それはそうです。 dbが空の場合、エラーなしで動作します。 また、同期プロセスが機能し、メッセージが表示されます。両側のデータは完全に同期しています。私の推測では、スタックサイズがある値を超えたときに、ブラウザがループ処理を強制終了するということです。私はまだ助けていただければ幸いです... –

+0

コールバック 'db.sync(remoteDb).on( 'complete'、function(){ console.log( 'sync no error'); } '、function(err){ console.log(err); コンソール。log( 'キャッチ同期エラー'); }); '私はsync関数によってスローされるエラーではないことを知りました。 –

+0

put関数でエラーが発生したにもかかわらず、putが機能します... 'remoteDb.put({ _id: '[email protected]'、 名前: 'David'、 年齢:69 }); –

答えて

1

私は同じ問題を抱えていて、明らかにそこにzone.jsの問題があります。次のバージョンで解決する必要があります。 v.0.8.16を使用している間は私の問題を解決します。ここで

"zone.js": "0.8.16"

githubの問題への参照です:https://github.com/angular/zone.js/issues/886

+0

ありがとうございます!修正** "zone.js": "0.8.16" **は私のためには機能しませんでしたが、githubページは完璧でした。リンク内のzipをダウンロードし、zone.jsで抽出することで問題を解決しました。私はすぐに私のポストを更新します。 –

関連する問題