Не в состоянии реплицировать локальную IndexedDB на удаленную CouchDB с помощью PouchDB - PullRequest
0 голосов
/ 21 ноября 2018

Я использую PouchDB 7.0.0 в проекте Ionic (Ionic 4.0.5).

В провайдере я определяю как локальную, так и удаленную базу данных:

@Injectable()
export class DatabaseProvider {

  constructor() {
    this.db = new PouchDB("mydb");
    this.remote = new PouchDB("http://<my_server_running_couchdb>/<remote_db_name>")

  }

Локальная база данных находится в браузере Chrome как экземпляр IndexedDB.Однако эта проблема также возникает в Firefox, поэтому не похоже, что виноват браузер.

Удаленная база данных изначально пуста и работает на CouchDB 2.1.2.Он уже был создан на моем сервере без настройки администратора или участника, поэтому он должен быть общедоступным и разрешать неаутентифицированные запросы.Кстати, CORS также включены.

В том же провайдере я также определяю метод, который запускает репликацию с локального БД на удаленный узел:

  replicateLocalDBToRemote() {
    console.log("Replicating database...");
    this.db.replicate.to(this.remote).then(() => {
      console.log("Celebrate");
    }).catch(error => {
      console.error(error)
    })
  }

И вотчто вызов replicateLocalDBToRemote бросает в меня

CustomPouchError {__zone_symbol__currentTask: e, result: {…}}
result:
doc_write_failures: 0
docs_read: 0
docs_written: 0
end_time: "2018-11-21T16:23:36.974Z"
errors: []
last_seq: 0
ok: false
start_time: "2018-11-21T16:23:36.874Z"
status: "aborting"

, и я боюсь, я не могу назвать это самоочевидным сообщением.

Любое предположение о том, что может быть основной причиной

РЕДАКТИРОВАТЬ: После обхода репозитория PouchDB на github я обнаружил эту запись , которая может относиться к той же проблеме.

1 Ответ

0 голосов
/ 25 ноября 2018

Я исправил проблему, разрешив трафик через порт 5984 на моем удаленном сервере CouchDB.

Дело в том, что отправка запросов через порт 80 (т.е. GET http://<my_server>.com/mydb) отправляет обратно некоторые данныеданные, поэтому я никогда не пытался попробовать порт 5984, потому что я думал, что API также был реализован на порту 80 ...

Так что, по крайней мере, моя проблема не имеет ничего общего с PouchDB, но я желаю ошибкисообщение было более конкретным.

...