Как указать на источник URL в репликации couchdb? - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть локальная PouchDB, которая должна синхронизироваться с удаленной CouchDB.Я пытаюсь (пока безуспешно) реплицировать локальный (на localhost: 8081) на удаленный (на localhost: 5984) через вызов POST для / _replicate.Независимо от того, что я ввожу в поле «источник» моего запроса, он добавляет «http: 127.0.0.1: 5984 /» к URL-адресу источника (или имени) и, очевидно, я получаю сообщение об ошибке, в котором говорится, что он не может найтиисточник дб.Конечно.

Мой вопрос (который, кстати, мой самый первый вопрос о StackOverFlow, так что, пожалуйста, будьте снисходительным), таков: как я могу указать на правильный дБ?Спасибо!

let url = `http://127.0.0.1:5984/_replicate`;
let data = {
    // This is where I struggle
    "source" : "http://127.0.0.1:8081/_pouch_local_db",
    "target" : `http://127.0.0.1:5984/mydb-${username}`
}
fetch(url, {
    method: 'POST',
    body: JSON.stringify(data),
    headers: {
      'Content-Type': 'application/json',
    },
    credentials: 'include',
  }).then(response => {
    console.log('Success syncing: ', response);
  }).catch(error => console.error('Error while syncing: ', error));

1 Ответ

0 голосов
/ 11 февраля 2019

Ваш код предполагает, что вы просите CouchDb выполнить репликацию с локальной базой данных PouchDb?Это не будет работать, так как PouchDb предназначен для клиентской базы данных.При обычном использовании PouchDb не является сервером (я знаю, что сервер PouchDb доступен, но я не думаю, что это поможет).

Вам следует использовать API PouchDb (включите библиотеку PouchDB в свой Javascriptкод) и попросите локальную базу данных PouchDb выполнить репликацию с сервером CouchDb через порт 5984.

Я ожидаю, что ваш код будет выглядеть следующим образом:

var dblocal = new PouchDB('local_db');
var dbremote = new PouchDB('http://127.0.0.1:5984/myremotedb');
dblocal.replicate.to(dbremote, function (err, result) {
  if (err) { return console.log(err); }
  // handle 'completed' result
});

Я предполагаю, что у вас нет пароля-защитил вашу тестовую базу данных CouchDb.Если у вас есть, вам нужно будет включить имя пользователя и пароль в опции «auth» для удаленной базы данных при использовании новой PouchDB.

На сайте PouchDB есть несколько примеров и информация.

...