如何将 pouchdb 与远程 Coudant 同步,无法连接?

How to sync pouchdb with remote Coudant, not able to connect?

如何使用用户登录将PoucDB同步到Cloudant?我的 Cloudant 设置了 IAM 和 Legacy。

如何注册用户并使用凭据登录以使用 Cloudant 和 PouchDB

我没有在 Cloudant、PouchDB 文档中找到答案。并且在 Whosebug

中看不到我的答案

我正在使用 PouchDB 文档:

var db = new PouchDB('todos');
const remoteUrl = "https://some address"
const remoteOptions = {
   'auth': { 'username': user , 'password': pass } }  
const remoteDb = new PouchDB(remoteUrl, remoteOptions);

localDB.sync(remoteDB).on('complete', function () {
  // yay, we're in sync!
}).on('error', function (err) {
  // boo, we hit an error!
});

从 Cloudant 到本地 Couchdb 的复制确实有效。因此我可以远程连接到 Coudant。

因为您可以使用 Legacy Auth,所以我不会担心 IAM 身份验证。我们可以简单地为您的移动客户端生成一个 API key/password 并使用旧版身份验证。

正在创建 API 密钥

在 Cloudant 仪表板中,选择“权限”菜单并单击“生成 API 密钥”按钮。您应该看到生成的密钥和密码 - 这些成为您提供给 PouchDB 的 URL 中的用户名和密码。

如果您正在进行同步(即数据双向流动),那么您的 API 密钥需要 _reader_writer 权限。如果数据仅从服务器流向移动设备,那么 _reader & _replicator 就足够了。

客户端代码

您的客户端代码非常正确:

  • 记住 Cloudant 只接受 HTTPS 连接
  • 您的 API Key/Password 对中的密钥将成为您的用户名
  • 您的 API Key/Password 对中的密码将成为您的密码

例如

const PouchDB = require('pouchdb')
const db = new PouchDB('todos')
const username = 'KEY'
const password = 'PASSWORD'
const host = 'mycloudservice.cloudant.com'
const databaseName = 'todos'
const remoteDB = `https://${username}:${password}@${host}/${databaseName}`
    
db.sync(remoteDB).on('complete', async function () { 
 console.log('done')
}).on('error', function (err) {
  console.error(err)
});