【问题标题】:PouchDB/CouchDB usage/schema for user data用户数据的 PouchDB/CouchDB 使用/模式
【发布时间】:2016-09-19 17:24:09
【问题描述】:

我正在使用 PouchDB + CouchDB 在当前正在开发的 Angular 应用程序中存储和同步数据。数据按用户存储,包含用户权限/设置、最近查看的内容和购物车项目等内容。

目前,我有一个 CouchDB 数据库,其中包含每个用户的文档。虽然这种结构非常适合快速检索特定于用户的数据,但它在逻辑上存在缺陷,因为所有用户文档都同步到访问该应用程序的任何设备。也就是说,我最终只需要同步当前登录用户的数据。

那么,我的问题是,我应该为每个用户创建一个 Couch 数据库,而不是为每个用户使用一个带有文档的单个数据库吗?还是有更好的方法来解决这个问题?

【问题讨论】:

  • 您是否尝试过设置拉取过滤器?
  • @MichaelPickett 不,我没有,你能指出一个例子或文档吗?是否使用设计文档查询完成了拉取过滤器?
  • 这是我发现的可能对pouchdb.com/2015/04/05/filtered-replication.html987654321@有帮助的东西
  • @MichaelPickett 该死的......我怎么没找到。这看起来是一篇很有帮助的文章。就在他提到的前几行中,“为每个用户或每个角色创建一个数据库并不可耻!”。我已经感觉好多了;)谢谢先生!

标签: couchdb pouchdb


【解决方案1】:

如果您查看pouchdb-authentication 插件,您会发现您可以将用户的元数据存储在_user 数据库中。这可能就是您所需要的。

【讨论】:

  • 这可能适用于最少的用户元,但在您处理用户保存的购物车、位置数据、交易历史、应用程序设置等的情况下,如果不需要多个数据库,您将需要多个文档。我最终为每个用户使用了一个文档,并使用过滤器有选择地仅将登录的用户数据同步到他们的设备。
  • “每个用户的数据库”是 CouchDB 的标准做法,因此将“购物车”数据等存储在用户数据库中是有意义的,因为这不是“用户”元数据。这只是应该存储在用户数据库中的数据。 “_user”数据库旨在提供内置功能,用于验证用户身份并存储“元数据”,如姓名、地址等。它不用于存储用户数据。
猜你喜欢
  • 1970-01-01
  • 2020-05-03
  • 2019-10-04
  • 1970-01-01
  • 1970-01-01
  • 2015-06-20
  • 2017-11-19
  • 2018-06-11
  • 2015-08-25
相关资源
最近更新 更多