gpt4 book ai didi

couchdb - 如何管理pouchdb和couchdb同步?

转载 作者:行者123 更新时间:2023-12-02 00:18:31 24 4
gpt4 key购买 nike

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

我在服务器上有 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。

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

enter image description here enter image description here

最佳答案

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

您可以 resolve the conflicts或者(在您的情况下更合理的解决方案)为每个用户存储多个文档而不是一个大文档。

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

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

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

关于couchdb - 如何管理pouchdb和couchdb同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30028834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com