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としてエラーが依然として存在します。
[OK]を、私はいくつかのより多くのテストを実行し、同期が唯一の問題であるように私は、DBのデータを持っている場合、それはそうです。 dbが空の場合、エラーなしで動作します。 また、同期プロセスが機能し、メッセージが表示されます。両側のデータは完全に同期しています。私の推測では、スタックサイズがある値を超えたときに、ブラウザがループ処理を強制終了するということです。私はまだ助けていただければ幸いです... –
コールバック 'db.sync(remoteDb).on( 'complete'、function(){ console.log( 'sync no error'); } '、function(err){ console.log(err); コンソール。log( 'キャッチ同期エラー'); }); '私はsync関数によってスローされるエラーではないことを知りました。 –
put関数でエラーが発生したにもかかわらず、putが機能します... 'remoteDb.put({ _id: '[email protected]'、 名前: 'David'、 年齢:69 }); –