跨多个用户使用IndexedDB数据

时间:2017-08-19 19:06:09

标签: javascript indexeddb

我正在尝试确定为我的应用程序创建“保存”功能的最佳方法,并考虑使用IndexedDB来实现此目的。我已经阅读了IndexedDB的一些文档,但我一直无法找到问题的答案:

在我的应用程序中,用户可以登录并可以进行数据更改。这里的想法是,在点击Save之后,这些数据将被存储在某个地方,其他用户登录后将能够看到这些更改并在需要时进行其他修改等。现在,我的问题是,鉴于其他用户需要能够看到其他用户所做的更改,IndexedDB适合这个吗?或者基于IndexedDB会话,哪些更改只能在本地查看?

如果这些更改仅限于在本地查看,这意味着我唯一的选择是将这些更改存储在后端,并且在用户保存数据时多次点击数据库似乎不可行解。这是我的方法:

  1. 点击“保存”后,向后端发送一个标记,表示保存为
  2. 检查条目是否存在,如果不存在,则将其作为插入存储在数据库中(不进行验证)。将标志添加到DB。如果条目存在,则存储为更新。
  3. 如果用户提交(不同于保存),请执行数据验证并更新数据库中的条目。
  4. 如果IndexedDB不是一个选项,这是我能想到的最佳方法。从理论上讲,是否有更好的方法来实现这一目标?提前谢谢。

3 个答案:

答案 0 :(得分:1)

每个浏览器客户端按源存储indexedDB。如果您在同一台计算机上有多个用户,每个用户使用相同的浏览器,并访问相同的源,那么您可以轻松地将不同用户的信息存储在同一个indexedDB数据库中。

  • 它不安全,这是不可避免的。任何打开devtools的人都可以检查数据库的内容。
  • 任何用户都可以出于任何原因随时删除数据库中的所有数据,这也是无法避免的。

答案 1 :(得分:0)

indexedDB中只存储加密数据,设置key区分每个用户的记录,不同的用户绑定不同的解密key。

这样,即使是其他用户也可以看到记录行,但除了自己的记录之外,永远无法读取真正的内容。

答案 2 :(得分:0)

如果您在同一台计算机上有多个用户,每个用户都使用相同的浏览器,并访问相同的来源,那么是的,您可以轻松地将不同用户的信息存储在同一个 indexedDB 数据库中。

您如何设置系统以授予这种行为?您为文件系统中的所有用户创建一个公共文件夹? 我看到索引数据库数据存储在这里: C:\Users\XXXXXX\AppData\Local\Google\Chrome\User Data\Default\IndexedDB