存储多个用户数据的最佳方法是每个用户每个数据库.我正在使用同样的方法.
我在服务器上有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":""
}]
}
Run Code Online (Sandbox Code Playgroud)
所有这些事务都在服务器端执行,结果在这些文档中更新.当执行任何新事务时,我将其存储在数据属性的事务文档中.
现在我在pouch和couchdb中有1个事务,两者都意味着两个都是同步的.
现在,当移动应用程序处于脱机状态时,它会执行存储在pouchdb事务文档中的脱机事务.
在服务器端,1个事务更新为成功.
现在当应用程序进入联机和同步执行时,我正在丢失我的服务器端更改,最后事务文档中的数据是客户端pouchdb.
在这里我丢失了服务器端数据.那么什么是好方法或如何解决它.

发生的事情是您与同一文档存在冲突,因为它由服务器以一种方式修改,而客户端以另一种方式修改.一个相互冲突的版本是任意获胜,另一个是失败.
您可以解决冲突或(在您的情况下更合理的解决方案)每个用户存储多个文档而不是一个大文档.
仅仅因为每个用户有一个数据库并不意味着每个用户需要一个文档.:)例如你的文档可能是:
{_id: "Tran_1", status: "Pending"}
{_id: "Tran_2", status: "Pending"}
// etc.
Run Code Online (Sandbox Code Playgroud)
这些文档将在客户端上创建一次,并在服务器上更新一次.没有冲突的可能性.小菜一碟!