Проблема репликации IBM Cloudant / PouchDB, статус: 400, bad_request - PullRequest
1 голос
/ 28 февраля 2020

Ошибка при удаленной репликации базы данных IBM Cloudant. Я использую "pouchdb": "^ 7.2.1" в приложении Angular 8 с TypeScript. Самое странное, что иногда это работает, а иногда нет. Когда это не так, он говорит:

CustomPouchError {error: "bad_request", reason: "Please supply either IAM session cookie or basic auth not both", status: 400, name: "bad_request", message: "Please supply either IAM session cookie or basic auth not both", …}
error: "bad_request"
reason: "Please supply either IAM session cookie or basic auth not both"
status: 400
name: "bad_request"
...

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

private startReplication(localDB: PouchDB.Database, remoteDB: PouchDB.Database):Promise<PouchDB.Database> {
    return new Promise((resolve, reject) => {
      let replicationHandler = localDB.replicate
        .from(remoteDB, {
          batch_size: 200,
          batches_limit: 10
        })
        .on("paused", info => {
          replicationHandler.cancel()
        })
        .on("complete", info => {
          replicationHandler.cancel()
          resolve()
        })
        .on("error", err => {
          replicationHandler.cancel()
          reject(err)
        })
    })
  }

Удаленная БД определяется следующим образом:

let userDB = "https://token:password@myurl.cloudant.com/mydatabase$username"
this.remoteDB = new PouchDB(`${userDB}`, {
      auto_compaction: true
    })

1 Ответ

0 голосов
/ 28 февраля 2020

Похоже, что сервер Cloudant думает, что вы делаете запрос, используя как базовый c auth , так и сеанс IAM Cooking ie, который он отклоняет. Может быть, попытаться очистить ваши куки Cloudant?

...