如何管理pouchdb和couchdb同步?

2024-03-06

存储多个用户数据的最佳方法是每个用户每个数据库。我正在使用同样的方法。

我在服务器上有 couchdb,在移动应用程序上有 pouchdb。我通过在 pouchdb 和 couchdb 中为用户创建单独的数据库来维护每个用户数据。这意味着我在 couchdb 中有多个数据库,在 pouchdb 中有一个数据库。

通常在sqlbase数据库中用户数据存储在不同的不同表中。

所以在 nosql pouchdb 中我正在为每个表创建文档。

我面临的实际问题是:

我在每个数据库中都有一个文档来存储用户的交易。

当客户离线时以及当应用程序将在线事务同步到 couchdb 用户数据库的事务文档中时,客户端事务将存储在 pouchdb 中。

交易文档中存储的数据如下

{
  "_id":"transaction ",
  "_rev":"1-3e5e140d50bf6a4d873f0c0f3e3deb8c",
  "data":[
    {
      "transaction_id":"tran_1",
      "transaction_name":"approve item",
      "status":"Pending",
      "ResultMsg":""
    },
    {
      "transaction_id":"tran_2",
      "transaction_name":"approve item",
      "status":"Pending",
      "ResultMsg":""
    }]
}

所有这些事务都在服务器端执行,结果在这些文档中更新。每当执行任何新事务时,我都会将其存储在事务文档的数据属性中。

现在我在 pouch 和 couchdb 中有 1 笔交易,这意味着两者都是同步的。

现在,当移动应用程序离线时,它会执行存储在 pouchdb 事务文档中的离线事务。

在服务器端,1 笔交易已更新为成功。

现在,当应用程序上线并同步执行时,我丢失了服务器端更改,最后事务文档中的数据与客户端 pouchdb 一样。

我在这里丢失了服务器端数据。那么什么是好的方法或者我该如何解决它。


发生的情况是同一个文档存在冲突,因为服务器以一种方式修改它,而客户端以另一种方式修改它。一种相互冲突的版本是任意获胜,而另一种则是失败。

你可以解决冲突 http://pouchdb.com/guides/conflicts.html或者(在您的情况下更合理的解决方案)为每个用户存储多个文档而不是一个大文档。

每个用户拥有一个数据库并不意味着每个用户需要一个文档。 :) 例如,您的文档可能是:

{_id: "Tran_1", status: "Pending"}
{_id: "Tran_2", status: "Pending"}
// etc.

这些文档将在客户端上创建一次并在服务器上更新一次。没有发生冲突的可能性。小菜一碟!

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

如何管理pouchdb和couchdb同步? 的相关文章

  • 如何在 Google AppEngine 平台上访问 Fauxton?

    我正在 Google App Engine 上创建一个离线优先的应用程序 其中 PouchDB 作为我的本地数据库 CouchDB 作为我的远程数据库 我已在 Google AppEngine 上启用了 CouchDB 并尝试访问以下 UR
  • 我需要有关 NoSQL/MongoDb 和数据/模型结构的建议

    最近我正在探索NoSQL 数据库 我需要关于如何针对给定问题以最优化 最有效的方式存储数据的建议 我现在的目标是 MongoDB 不过 它应该与 CouchDB 相同 假设我们有这 3 个模型 Story id title User id
  • 使用 Node.js 从 couchdb 检索所有文档

    我正在编写一个简单的测试应用程序来试验 node js 和 couchdb 的功能 到目前为止我很喜欢它 但我遇到了障碍 我已经广泛寻找 但似乎找不到答案 我的测试服务器 一个简单的地址簿 做了两件事 如果用户去localhost 8000
  • 从 CouchDB 解析 JSON 时如何超越“total_rows”

    我使用以下 jQuery 代码从 CouchDB 获取 JSON 文件 Function getURL var api url http 127 0 0 1 5984 couchcontentqueue design DocCollecti
  • couchdb 视图使用另一个视图?

    我对 couchdb 中的视图有疑问 目前 我有许多视图 例如 view A view B view Z 对于每个视图 它们包含相同范围的键但具有不同的值 IE view A key key 1 value 10 key key 2 val
  • 检索刚刚删除的文档

    我删除了一个文档 但我仍然可以在其中看到它 changes 这样我就可以看到最后一个有效的 rev 已删除 因此获取带有 id 和最后修订版本的文档只会返回 id 25efa4ec8489d8b89b34c5cad6000059 rev 3
  • 使用 CouchDB 视图替换 SQL 中的多个联接

    我正在为我的应用程序实现过滤功能 但在 CouchDB 上编写视图时遇到问题 在 SQL 中 这将是一个具有多个连接的语句 如何替换 CouchDB 中的多重连接 本文涵盖单连接 http www cmlenz net archives 2
  • CouchDB“加入”两个文档

    我有两个看起来有点像这样的文档 Doc id AAA creator id data DataKey id credits left 500 times used 0 data id AAA 我想要做的是创建一个视图 它允许我传递 Data
  • 如何使用CURL/CygWin将文件从本地Windows机器发送到服务器?

    我的目标是使用 cygwin curl 将 CouchDB 文档从我的 Windows 计算机上传到远程服务器 以下教程展示了如何在 Mac 上执行相同操作 http net tutsplus com tutorials getting s
  • 如何在couchdb中实现复杂的搜索过滤器?我应该避免暂时的观点吗?

    我想在网格中管理我的用户实体 我想对它们进行排序 并且我想为每一列都有一个搜索过滤器 我的动态生成的临时视图工作正常 function doc if doc type User Dynamic filters WHERE firstName
  • CouchDB Java 客户端

    这个维基页面 http wiki apache org couchdb Getting started with Java http wiki apache org couchdb Getting started with Java 列出了
  • CouchDB复制忽略零星文档

    我的应用程序有一个 CouchDB 设置 CouchDB 2 1 1 它在很大程度上依赖于复制完整性 我们使用 每个用户一个数据库 方法 并附加一层 角色 db s 将用户分组 如下图所示 最近 在增加测试人员数量的同时 我们发现一些文档没
  • 零部署 CouchDB 嵌入 Windows 应用程序?

    我可能在这里做梦 但我想知道是否有可能将最小的 CouchDB 引擎完全嵌入到 Windows 应用程序中 以便该应用程序可以运行而无需在用户计算机上安装 CouchDB Erlang 我已经提供了这种精简 捆绑的功能 请在此处查看http
  • Flux waitFor() 和异步操作,如何建模。

    我使用 pouchDB 作为应用程序的本地数据库 我想查询 PouchDB 的结果并将其加载到 React js 中 然而 即使我使用 waitFor 方法 PouchDB 查询的结果返回得太晚了 我想我不明白 waitFor 的用法是否正
  • 如何使用 ibrowse 将附件上传到 CouchDB 中的文档?

    我已经使用curl上传图像文件Penguins jpg 例如 C curl gt curl vX PUT H Content Type image jpeg http localhost 5984 DBNAME DOCID Penguins
  • 用户如何登录定义了读者角色的 couchapp?

    我通过 Couchapp 部署了我的应用程序 这意味着整个应用程序是从数据库中提供服务的 我不希望 Couchdb 数据库中的数据公开可用 因此我指定了用户在向他提供数据之前必须具有的读者角色 然而 当我去申请时 我所能得到的是 error
  • CouchDB 中的分页?

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

    我应该如何在 android 中安装和使用 couch Db 我的意思是本地沙发数据库 我可以在平板电脑和模拟器中使用它 为此我必须遵循哪些步骤 我目前正在开发一个使用它的项目 有两种选择 1 couchbase android 是的 co
  • 如何从 CouchDB 加载随机文档(高效且公平)?

    我想从存储在 CouchDB 数据库中的一组文档中加载随机文档 单据的取放方式应符合下列要求 效率 文档的查找应该高效 最重要的是加载文档的时间不能随文档总数线性增长 这意味着skip无法使用查询参数 均匀分布 选择应该是真正随机的 尽可能
  • PouchDB - 手动管理冲突

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

随机推荐

  • 如何将 Rails 中的自定义环境设置为默认环境?

    i created通过添加新文件在我的 Rails 应用程序中自定义暂存环境config environments staging rb 与 一样config environments development rb然后添加数据库配置conf
  • Android Draw 9补丁工具:图外黑线是什么意思

    我尽力在谷歌和安卓中找到这个问题 也做了几次尝试和错误 但无法得到这个问题 我正在学习 Android 的 Draw Nine Patch 图像 我知道的一个基本原则是 您处理的任何图像都必须采用 png 格式 如果它已经是 9 png 那
  • 如何反转 WPF Storyboard 动画?

    我在 Expression Blend 4 中的图像上创建了 WPF Storyboard 动画 悬停时 图像逐渐模糊 当鼠标离开图像时 有什么方法可以撤消或反转故事板吗 我可以让它触发 Storyboard Remove 但这实际上不会向
  • laravel livewire,如何通过单击将id或数据传递给另一个组件

    我有两个组件 帖子 和 帖子 帖子 显示帖子 通过单击图像我想在另一个组件中显示单击帖子的数据 下面发布类和组件 组件视图 div class post foreach posts as post div h1 post gt name h
  • 如何在定义之间添加空行?

    我成功地将我的代码设置为 clang format 格式 就像 iIwant 一样 然而 有一点让我很困扰 我想要在结构 类 函数的定义之间以及函数的声明之间有一个空行 目前 在格式化时 clang format 会删除空行 从而使所有内容
  • Android:有没有办法禁用通知捆绑?

    我有一个应用程序 用户可以在其中收到有关他们需要做的事情的多个通知 用户可以选择使其中一些通知持久化 我通过调用NotificationCompat Builder setOngoing 来实现 至少在我的 Android 版本 Nouga
  • SQL 2016 - 将 XML 转换为 Json

    我正在尝试使用 SQL2016 中的 FOR JSON PATH 将 XML 列转换为 Json 但遇到一些问题 给定以下 XML 请注意 某些 Product 元素可能包含 Product 列表
  • 如何为 Objective-C 协议提供默认实现?

    我想指定一个具有可选例程的 Objective C 协议 当例程不是由符合协议的类实现时 我想在其位置使用默认实现 协议本身是否有一个地方可以定义这个默认实现 如果不是 那么减少到处复制和粘贴此默认实现的最佳实践是什么 Objective
  • Chrome 中的 Fetch API 内存泄漏

    当以最简单的方式使用 fetch API 时 Chrome 无法正确进行垃圾收集 难道我做错了什么 for i 0 i lt 100 i fetch https upload wikimedia org wikipedia commons
  • 有没有办法使用java在Linux机器上获取用户的UID?

    有没有办法使用java在Linux机器上获取用户的UID 我知道System getProperty user name 方法 但它返回用户名 我正在寻找 UID 你可以执行id命令并读取结果 例如 id u jigar output 10
  • 如何在Qt6中的QML中使用QVideoSink

    我创建了自己的视频接收器 继承自QVideoSink在 Qt 6 中 我想在 QML 端显示该接收器的内容 我该怎么做 VideoOutputQML 类型有videoSink属性 但它是只读的 VideoOutput 和 QVideoWid
  • 使用最新的 Xcode 在 iOS 3.1.3 中进行测试

    如何使用最新的 Xcode 版本在 iOS 3 1 3 中测试应用程序 可以在模拟器中执行此操作吗 如果没有 是否可以将设备降级到 iOS 3 1 3 是的 您可以降级设备 它没有得到官方支持 但我已经在两台 3G 上完成了它 并在 3 1
  • 将字符串添加到 ImageView 对象 Android

    我需要将一个字符串附加到 ImageView 对象中 以便我可以执行类似的操作imgView1 getString 它会返回它 我知道有getTags and setTags但根据我的理解 它只使用整数 谢谢 只需补充 dharms 答案
  • 没有使用 Spring Security 进行身份验证和授权

    我的项目要求我使用 Spring Security 进行 CSRF 和 XSS 保护 但不使用它进行身份验证和授权 我已将 SS 配置到我的应用程序中 但每次访问页面时 它都会自动将我重定向到其登录页面 我如何禁用此功能 我的Securit
  • 指定 cartopy 中的纬度/经度标签位置(删除某些边)

    Cartopy 0 18 0 中为任何地图投影添加纬度 经度标签的新功能非常出色 这是这个包的一个很好的补充 对于某些地图 特别是在极地地区 纬度 经度标签可能非常拥挤 这是一个例子 from matplotlib import pyplo
  • 扩展网址如何工作

    我知道这些类型的 URL 如何加载页面 基于它们的 GET 参数 在后端大致是这样的 但这些类型的 URL 是如何工作的呢 我的意思是 数据是如何动态加载的 www dummysite com parm subpage1 xyz www d
  • 处理连续的 JSON 流

    现已不复存在 页面http stream twitter com 1 statuses sample json http stream twitter com 1 statuses sample json用于返回连续且无限的 JSON 数据
  • 第一次执行代码时颜色不正确

    我有一段代码可以在一页上绘制多个堆叠条形图 我指定了一个调色板 以便每个数据组都与每个图表中的相同颜色相关联 我发现第一个图表中的颜色不正确 但在所有后续图表中都是正确的 如果我在同一个 R 会话中重新运行代码 所有图表都具有正确的颜色 但
  • 如何在 Mac 上设置 2.7 的 python 路径?

    我知道 这个问题已经被问过很多次了 也被回答过很多次了 但是 我仍然无法摆脱这个 我在我的 mac 上发现了以下信息 cd Library Frameworks Python framework Versions Current gt 2
  • 如何管理pouchdb和couchdb同步?

    存储多个用户数据的最佳方法是每个用户每个数据库 我正在使用同样的方法 我在服务器上有 couchdb 在移动应用程序上有 pouchdb 我通过在 pouchdb 和 couchdb 中为用户创建单独的数据库来维护每个用户数据 这意味着我在