多个远程数据库,单个本地数据库(花式复制)

2023-11-24

我有一个管理用户的 PouchDB 应用程序。

用户拥有一个使用单个 CouchDB 数据库进行复制的本地 PouchDB 实例。很简单。

这就是事情变得有点复杂的地方。我正在将“组”的概念引入到我的设计中。组将是不同的 CouchDB 数据库,但在本地,它们应该是用户数据库的一部分。

我正在读一些关于“花式复制”在 pouchDB 网站上,这似乎是我想要的解决方案。

现在,我的问题是,我该怎么做?进一步来说,如何从多个远程数据库复制到单个本地数据库?有些代码示例会很棒。

从下面的图表中,您会注意到我基本上需要根据用户所在的组动态添加数据库。对我的设计的批评也将受到赞赏。

enter image description here

流程应该是这样的:

  1. 将所有用户文档从他/她的数据库检索到localUserDB
  2. var groupDB = new PouchDB('remote-group-url'); groupDB.replicate.to(localUserDB);
    (多个 pouchdb 实例 0_0 有任何性能问题吗?)
  3. 在本地,当用户进行与特定组相关的更改时,我们确定相应的数据库并通过执行以下操作进行复制:
    localUserDB.replicate.to(groupDB)(我需要过滤复制吗?)

从多个远程数据库复制到本地数据库:

remoteDB1.replicate.to(localDB);
remoteDB2.replicate.to(localDB);
remoteDB3.replicate.to(localDB);
// etc.

然后做一个过滤复制从本地数据库到应该接收更改的远程数据库:

localDB.replicate.to(remoteDB1, {
  filter: function (doc) {
    return doc.shouldBeReplicated;
  }
});

为什么要过滤复制?因为您的本地数据库包含来自多个来源的文档,并且您不希望将所有内容复制回一个远程数据库。

为什么要有过滤功能?既然你正在复制from本地数据库,使用设计文档、视图等不会带来性能提升。只需传入一个过滤函数即可;更简单。 :)

希望有帮助!

Edit:好吧,听起来用户所属组的名称实际上包含在第一个数据库中,这就是您所说的“迭代”的意思。不,你可能不应该这样做。 :) 您正试图绕过 CouchDB 的内置身份验证/权限系统。

相反,你应该使用 CouchDB 的内置roles,将这些角色应用于用户,然后使用“每个角色数据库”方案来确保用户只能访问其正确的组数据库。用户可以随时查询_usersAPI来查看他们属于什么角色。简单的!

欲了解更多详细信息,请阅读pouchdb-身份验证自述文件.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多个远程数据库,单个本地数据库(花式复制) 的相关文章

  • CouchDB 与 RDBMS 相比有何优势

    我听说过很多关于couchdb http couchdb apache org 最近 我对它提供的功能感到困惑 很难以严格的优势 劣势形式解释所有差异 我建议你自己尝试一下 CouchDB 您首先会注意到的是 初始使用期间的学习曲线与 RD
  • PouchDb find:为什么我的索引没有被使用?

    我正在使用 PouchDb 和插件 PouchDb find 在 ionic Web 应用程序中查询本地数据库 几乎在每个用例中 当我创建索引时 我都会在查询时收到以下警告 docs warning no matching index fo
  • couchDB 中的链式映射/归约

    在 couchDB 中 我有一组如下所示的项目 为了示例而简化 id 1 date Jul 1 user user1 id 2 date Jul 2 user user1 id 3 date Jul 3 user user2 etc 我想获
  • PouchDb - 删除文档内的对象

    我是一名意大利 PouchDb 和 AngularJS 开发人员 我的 json 文档是 id 6 rev 3 f7283d7683cd6fb15753f494aad1d49f name Ivrea owners owner id 1 na
  • 如何在Fauxton中使用reduce

    我一直在关注一些 Couch 培训 但无法弄清楚如何在 Fauxton 中使用reduce 选择地图区域下方的 count 本身不会执行任何操作 我尝试将其添加到地图代码下方 但我想我需要以某种方式集成它 在我的示例中 我试图计算每个标签在
  • 如何在 couchdb 中索引多维数组

    我有一个多维数组 我想用 CouchDB 对其进行索引 实际上使用 Cloudant 我的用户有他们所属团队的列表 我想搜索找到该团队的每个成员 因此 获取所有具有 ID 为 79d25d41d991890350af672e0b76faed
  • CouchDB 入门

    我已经在我的 Linux 云服务器上安装了 CouchDB 并且我正在尝试访问 Futon 欢迎屏幕 O Reilly 书中说要转到 127 0 0 1 portnum 但我不在本地主机上工作 它是我的远程服务器 所以我应该能够使用 xxx
  • CouchDB 文档更新处理程序(就地更新)

    http wiki apache org couchdb Document Update Handlers http wiki apache org couchdb Document Update Handlers CouchDB 0 10
  • CouchDB 备份和克隆数据库

    我们正在寻找 CouchdDB 作为类似 CMS 的应用程序 围绕备份我们的生产数据库有哪些常见模式 最佳实践和工作流程建议 我对克隆数据库以用于开发和测试的过程特别感兴趣 仅从实时运行的实例下复制磁盘上的文件就足够了吗 您可以在两个实时运
  • PouchDb.get(id,{attachments: true}) 在 Android 上不返回数据

    我正在使用 PouchDb 无复制 开发一个 Ionic 应用程序 我能够成功地存储带有附件的数据 为了检索数据 我使用下面的控制器片段来调用 angularjs 工厂中的 get 函数 pouchDbManager getData cur
  • 将 Objective-C 对象序列化和反序列化为 JSON

    我需要将 Objective C 对象序列化和反序列化为 JSON 以存储在 CouchDB 中 人们是否有通用解决方案最佳实践的示例代码 我查看了一些 JSON 框架 它们都停留在 NSDictionary NSArray 级别 即很多框
  • 创建和使用 Android 的 ContentProvider

    当我调用 Android ContentProvider 时 出现以下异常 java lang RuntimeException 无法 开始活动 ComponentInfo de harm android couchone de harm
  • CouchDb 单个文档的大小限制是多少

    我对文档存储复杂的数据结构有疑问 该数据结构可能会有所不同 文档需要完整存储和检索 需要提供文档搜索字段 我开始在 MongoBb 中存储文档 但那里的文档大小限制为 16 MB 这对我来说不够 CouchDb 允许的单个文档的最大大小是多
  • couchdb读取身份验证

    我如何处理 couchdb 中的读取身份验证 我知道角色可以在单独的数据库中定义 但我想在文档级别实现读取身份验证 我正在考虑使用node js 但它似乎不是一个优雅的解决方案 因为couchdb也有一个http服务器 我不想再添加一个 或
  • 如何使用 ibrowse 将附件上传到 CouchDB 中的文档?

    我已经使用curl上传图像文件Penguins jpg 例如 C curl gt curl vX PUT H Content Type image jpeg http localhost 5984 DBNAME DOCID Penguins
  • 内置方法读取couchdb文件大小?

    我正在尝试使用 couchdb 作为消息存储 并想报告消息大小 理想情况下 读取 size 属性会很好 最坏的情况是我可以检查整个文档 JSON 的字符串长度 我什至可能想使用尺寸作为查看键 您认为记录文档大小的最佳方法是什么 为什么您认为
  • CouchDB 中的分页?

    我将如何实现分页所需的查询 基本上 当请求第 1 页时 获取前 5 个条目 对于第 2 页 获取接下来的 5 页 依此类推 我计划通过 couchdb python 模块使用它 但这不会对实现产生任何影响 The CouchDB 指南 ht
  • CouchDB 通过三个索引键进行查询和过滤

    我目前正在尝试按具有三个值的键进行排序和排序 但让我们从文档结构开始 id DOCIDGOESHERE01 type MESSAGE date 2011 08 24 06 49 02 author USERIDGOESHERE01 rece
  • PouchDB - 手动管理冲突

    是否可以从客户端管理同步冲突 我的意思是 当 pouchDB 进行同步并检测到冲突时 是否可以获取 PouchDB 尝试同步的本地文档和 CouchDB 文档的最新版本 如果我可以获得这两个文档 我可以将它们显示给用户 他可以选择保留哪个版
  • 我可以为每个数据库创建多个集合吗?

    从 mongo 切换到 pouchdb 使用 Cloudant 我喜欢 每个用户一个数据库 的概念 但是有没有办法为每个数据库创建多个集合 表 Example Peter History Settings Friends John Hist

随机推荐

  • 交互式过渡非线性

    我正在玩自定义和交互式视图控制器转换 UIPercentDrivenInteractiveTransition 我正在构建一个以模式方式呈现卡片 其他视图控制器 的应用程序 我已经进行了自定义转换UIViewControllerAnimat
  • 使用 MySQL 和 PHP 在 HTML 中创建动态表

    我看过很多关于如何使用 PHP 和 MySQL 在 HTML 中构建表的帖子 但我经常在创建表后更改 SQL 列的标题 PHP 有什么方法可以自动更新代码 这样我只需输入表名 它就会打印表 而无需输入所有内容 th tags th
  • 如何通过名称获取控件名称?

    我有一个简单的功能 其中有一个组合框 如果组合框的值等于 禁用 我将禁用文本框 B 有许多组合框及其相应的文本框 B 按行排列并手动命名 如果组合框 A 被命名为Product1 文本框B将被命名Product1 status 我在想这样的
  • 如何在数据库android中存储图像[重复]

    这个问题在这里已经有答案了 我是 android 新手 我正在创建一个联系人管理器 我已经弄清楚如何将 EditText 字段中的值存储到数据库中 但我不知道如何在数据库中存储图像 我想知道是否有人可以帮助我解决这个问题 package a
  • JavaMail BaseEncode64 错误

    我目前正在开发一个从 gmail 帐户下载附件的应用程序 现在 每次下载压缩附件时都会出错 但是 并非全部 有些我可以毫无错误地检索它 这是异常消息 Exception in thread main com sun mail util De
  • 根据键值删除日期早于所需日期点的行

    我有一个 pd dataframe 如下所示 key value date value 01 2017 01 13 value 01 2018 02 17 value 01 2018 04 02 value 01 2018 05 13 va
  • iOS 7 -- navigationController 正在设置我的 UIScrollView 的 contentInset 和 ContentOffset

    我有一个 UIScrollView 实际上是一个 UICollectionView 但这可能并不重要 当它出现在 IOS 7 中时 导航控制器将其 contentInset 和 contentOffset 设置为我不想要的值 它似乎正在尝试
  • Rails 格式验证——字母数字,但不是纯数字

    测试用户名格式验证的最佳方法是什么 使用字母数字的正则表达式 但不是纯数字 我一直在我的模型中使用以下验证 validates username format gt with gt a z0 9 a z0 9 a z0 9 i 数字用户名
  • 如何在 Python 中使用 ruamel.yaml 从 YAML 文件中获取注释?

    我想从使用加载的 YAML 文件中获取注释字符串ruamel yaml The 项目文件缺少 API 参考 我找不到相关示例 访问评论的正确方式是什么 import ruamel yaml yaml YAML 1 2 C1 a C2 C3
  • Python string.join ( list ) 最后一个条目带有“and”

    有什么优雅的方法可以连接句子部分列表 使结果为 a b 和 c 其中list is a b c 简单指定 join 仅实现 a b c 另外 我确实对此进行了一些搜索 但显然我没有尝试编写短语 因为除了自己枚举列表之外 我还没有想出任何东西
  • 如何在 Javascript 中提取本地图像的元数据?

    我想获取用户拖放到网页中的图像的元数据 我已经设置了拖放功能 但是 图像实际上并未上传到服务器 它是在本地访问的 我仍然可以使用 Javascript 从图像中获取元数据吗 如果是这样 我该怎么做 有哪些好的图书馆 如果没有 我是否必须上传
  • 如何从 C# 中的二维数组中删除行和列?

    如何在 C 中删除二维数组中的特定行和列 int array 1 2 3 4 5 6 7 8 9 假设我想删除第 i 行和第 i 列 跳过它们 对于 nXn 数组而不仅仅是 3x3 并将剩余的数组存储在新数组中 所以输出将是 5 6 8 9
  • 有没有办法检查两个数组是否具有相同的元素?

    假设我有 2 个数组 firstArray 1 2 3 4 5 secondArray 5 4 3 2 1 我想知道它们是否包含相同的元素 而顺序并不重要 我知道我可以编写一个函数对它们进行排序 然后循环遍历它们进行检查 但是是否有为此预先
  • 获取维恩图中的项目列表

    使用以下代码很容易绘制维恩图 library VennDiagram set seed 1 For reproducibility of results xx 1 lt list A sample LETTERS 15 B sample L
  • 通过 IP 访问 IISExpress 以获取 ASP.NET Core API

    我有一个在 IIS Express 上运行的 asp net core 项目 网址 http 本地主机 53142 and https 本地主机 44374 如果我在浏览器中输入本地主机 则可以工作 但是 如果我输入我的 IPv4 IP 地
  • mysql - 查询三个表

    我有一个包含三个表的关系数据库 第一个包含与第二个相关的 id 第二个包含与第三个相关的 id 第三个包含我想要的结果 是否可以使用单个查询来查询第一个表中的 id 该 id 给出了第三个表中与之相关的所有结果 抱歉 我是 mySQL 新手
  • CompletableFuture 和垃圾收集

    我想触发许多一次性异步 CompletableFutures 如下所示 for Job job jobs CompletableFuture supplyAsync gt job process whenComplete this doSo
  • ASMX Web 服务未序列化抽象基类

    我有一个抽象类 我们称之为生命体 它看起来像 public abstract class Lifeform public virtual int Legs get set public virtual int Arms get set pu
  • 如何在Bigcommerce中通过sku id更新产品的“inventory_level”?

    我正在尝试更新产品的库存水平 但不幸的是没有成功 这是我的代码 我想更新产品的 inventory level 但可以这样做
  • 多个远程数据库,单个本地数据库(花式复制)

    我有一个管理用户的 PouchDB 应用程序 用户拥有一个使用单个 CouchDB 数据库进行复制的本地 PouchDB 实例 很简单 这就是事情变得有点复杂的地方 我正在将 组 的概念引入到我的设计中 组将是不同的 CouchDB 数据库