【问题标题】:How to sync pouchdb with remote Coudant, not able to connect?如何将 pouchdb 与远程 Coudant 同步,无法连接?
【发布时间】:2021-09-28 21:35:23
【问题描述】:

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

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

我在 Cloudant、PouchDB 文档中没有找到答案。并且在 Stackoverflow 中看不到我的答案

我正在使用 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。

【问题讨论】:

标签: javascript vue.js synchronization pouchdb cloudant


【解决方案1】:

由于您有 Legacy Auth 可用,我不必担心 IAM 身份验证。我们可以简单地为您的移动客户端生成 API 密钥/密码并使用旧式身份验证。

创建 API 密钥

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

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

客户端代码

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

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

例如

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)
});

【讨论】:

  • 感谢您的回复。用户如何登录?我需要为每个人制作一个 api 密钥吗?另外,为了安全起见,API 密钥和密码是如何隐藏的?
  • @MorganHayes,您必须有一个服务器端服务来处理身份验证并将 Cloudant API 密钥分发给授权用户。
  • 我认为可能是这种情况,昨天开始研究它。它进展缓慢。你知道任何例子或建议。感谢您的回复。
  • @GlennBird 我已经构建了一个 API 来处理身份验证和分发 Cloudant API 密钥。我无法找到如何实现关键部分的抛出的代码示例。你知道吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-03
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多