使用CouchDB/PouchDB时应用程序的体系结构

Mar*_*tra 4 couchdb cordova pouchdb sails.js ionic-framework

我想知道PouchDB在移动应用程序中使用本地存储时,架构应该是什么样子localStorage.

此时我习惯将应用程序的数据缓存到localStorage需要的时候,我会对后端执行API调用以请求或发布数据.后端掌握着所有的逻辑.如:

  • 此用户是否具有执行此操作的正确权限/角色?
  • 检查是否可以执行操作所需的任何其他逻辑

然后将所有数据存储到关系数据库中.我现在一直在阅读NoSQL数据库,特别是CouchDBPouchDB.所以我想知道这个架构会是什么样子?对我来说,此时出现了三个问题:

  1. 如果我有多个用户拥有自己的身份验证,我如何确保用户只能访问他们的数据?我还会在服务器端有1个数据库吗?
  2. PouchDB在客户端可以与远程同步PouchDB.但是,当使用Javascript构建应用程序时,如何PouchDB通过"黑客"客户端Javascript 确保人们不插入数据?
  3. 这些设置会不会使用后端?如果你想拥有一个API 3rd party,你只需要举一个Sails.js后端围绕CouchDB

nla*_*son 9

PouchDB维护者在这里,很高兴回答您的问题.:)

如果我有多个用户拥有自己的身份验证,我如何确保用户只能访问他们的数据?我还会在服务器端有1个数据库吗?

pouchdb-authentication README中有一个指南.Cloudant和Couchbase也有自己的系统来管理用户.

客户端的PouchDB可以与远程PouchDB同步.但是,当使用Javascript构建应用程序时,如何确保人们不通过"黑客"客户端Javascript将数据插入到PouchDB中?

您在服务器端编写validate_doc_update函数.当PouchDB尝试同步到CouchDB时,任何失败的文档都会发出一个'denied'事件,这些文档将不会同步.

对于本地数据库,您无法阻止用户编写错误数据(他们可以随时打开控制台并执行他们想要的任何操作),但您可以使用类似的pouchdb-validation方式在客户端重用验证功能.或者你可以在你put()的文件时自己做.

这些设置会不会使用后端?如果你想为第三方提供API,你只需在CouchDB周围放一个Sails.js后端?

有些人在没有任何后端的情况下编写PouchDB应用程序(仅使用纯CouchDB/Cloudant/Couchbase),而其他人喜欢将数据库与他们选择的服务器架构混合在一起.由你决定.:)

如果您使用Express,一个有趣的解决方案是使用express-pouchdb,因此您可以在现有体系结构中公开类似PouchDB Server的端点.但是对于Sails.js,你必须自己编写.