存储多个用户数据的最佳方法是每个用户每个数据库。我正在使用同样的方法。
我在服务器上有 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 一样。
我在这里丢失了服务器端数据。那么什么是好的方法或者我该如何解决它。