0

PouchDB と Sync Gateway の間のレプリケーションを設定するのに苦労しています。

Couchbase のブログ投稿をフォローしようとしましたが、うまくいきませんでした。

angular-pouchdbng- pouchdb を使用して Ionic アプリケーションを構築しています。

これが私がこれまでに理解したものです:

  1. 呼び出すたびにpouchCollection、指定された名前で新しいデータベースを作成するか、作成済みのデータベースの参照を提供します。
  2. 同期ゲートウェイは、各ドキュメントの承認を担当します。私は今、GUESTユーザーを有効にして実行している"admin_channels": ["*"]ので、誰もがすべてにアクセスできるはずですよね?
  3. CORSアプリとサーバーの両方が同じマシンで実行されているため、有効にする必要があります ( localhost)
  4. 両方の方法でレプリケーションを取得するには、db.sync(URL)( angular-pouchdb) を使用する必要があります。ここで、URL は次のようなものですhttp://localhost:4984/prospect/( prospectDB 名の場合もあります) 。

ここに私の同期ゲートウェイconfig.jsonファイルがあります:

{
  "log": ["CRUD", "REST+", "Access"],
  "facebook": {"register": true},
  "CORS": {
    "Origin": ["http://localhost:8100"],
    "LoginOrigin": ["http://localhost:8100"],
    "Headers": ["Content-Type"],
    "MaxAge": 17280000
  },
  "databases": {
    "prospect": {
      "server": "walrus:",
      "users": {
        "GUEST": {"disabled": false, "admin_channels": ["*"]}
      },
      "sync":
      `
      function(doc, oldDoc) {
        channel("everything");
      }
      `
    }
  }
}

ここに私のイオンコードがあります:

app.controller('MyCtrl', function($scope, pouchCollection) {
  $scope.students = pouchCollection('students');
  var URL = 'http://localhost:4984/prospect/';
  $scope.students.$db.replicate.sync(URL);
// ...list the array in the view
}

レプリケーションを機能させようとすると、初回実行時にコンソールに次のように表示されます。

GET http://localhost:4984/prospect/_local/jeOaLtKGemQWDpNAPzorJQ%3D%3D?_nonce=1442271117949 404 (Not Found)xhRequest @ pouchdb.js:641625.module.exports @ pouchdb.js:6435ajax @ pouchdb.js:604824.module.exports @ pouchdb.js:6211ajax @ pouchdb.js:989(anonymous function) @ pouchdb.js:994ajaxPromise @ pouchdb.js:993(anonymous function) @ pouchdb.js:1241(anonymous function) @ pouchdb.js:1069979 @ pouchdb.js:10760(anonymous function) @ pouchdb.js:7659(anonymous function) @ pouchdb.js:764679 @ pouchdb.js:1076068.Checkpointer.getCheckpoint @ pouchdb.js:9407(anonymous function) @ pouchdb.js:10076
pouchdb.js:6416 GET http://localhost:4984/prospect/_local/2_QcxPjLD.zmtOXa7VM8Gw%3D%3D?_nonce=1442271117953 404 (Not Found)xhRequest @ pouchdb.js:641625.module.exports @ pouchdb.js:6435ajax @ pouchdb.js:604824.module.exports @ pouchdb.js:6211ajax @ pouchdb.js:989(anonymous function) @ pouchdb.js:994ajaxPromise @ pouchdb.js:993(anonymous function) @ pouchdb.js:1241(anonymous function) @ pouchdb.js:1069979 @ pouchdb.js:10760(anonymous function) @ pouchdb.js:7659(anonymous function) @ pouchdb.js:764679 @ pouchdb.js:10760(anonymous function) @ pouchdb.js:9408
pouchdb.js:6416 GET http://localhost:4984/prospect/_local/jeOaLtKGemQWDpNAPzorJQ%3D%3D?_nonce=1442271118095 404 (Not Found)xhRequest @ pouchdb.js:641625.module.exports @ pouchdb.js:6435ajax @ pouchdb.js:604824.module.exports @ pouchdb.js:6211ajax @ pouchdb.js:989(anonymous function) @ pouchdb.js:994ajaxPromise @ pouchdb.js:993(anonymous function) @ pouchdb.js:1241(anonymous function) @ pouchdb.js:1069979 @ pouchdb.js:10760(anonymous function) @ pouchdb.js:7659(anonymous function) @ pouchdb.js:764679 @ pouchdb.js:10760updateCheckpoint @ pouchdb.js:930368.Checkpointer.updateTarget @ pouchdb.js:936868.Checkpointer.writeCheckpoint @ pouchdb.js:9362finishBatch @ pouchdb.js:9829
(index):28 The above 404 is totally normal. PouchDB is just checking if a remote checkpoint exists.

最後の行は正常と言っているので、すべて問題ないと思います。

When I run the app in the browser and in the emulator, Sync Gateway says things like:
2015-09-14T19:54:04.913-03:00 HTTP:  #001: GET /prospect/?_nonce=1442271244612
2015-09-14T19:54:18.730-03:00 HTTP:  #002: GET /prospect/?_nonce=1442271258729
...
2015-09-14T19:56:13.362-03:00 HTTP:  #049: GET /prospect/_local/2_QcxPjLD.zmtOXa7VM8Gw==?_nonce=1442271373356
2015-09-14T19:56:13.376-03:00 HTTP:  #050: PUT /prospect/_local/2_QcxPjLD.zmtOXa7VM8Gw==

私には、すべてが機能しているように見えます。しかし、iOS エミュレーターや別のブラウザーと同期することはできません。

私は何が欠けていますか?

4

1 に答える 1