Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Couchdb PockDB是一款针对不同集合的实时数据工具_Couchdb_Publish Subscribe_Pouchdb - Fatal编程技术网

Couchdb PockDB是一款针对不同集合的实时数据工具

Couchdb PockDB是一款针对不同集合的实时数据工具,couchdb,publish-subscribe,pouchdb,Couchdb,Publish Subscribe,Pouchdb,我正在考虑使用PockDB作为一种解决方案,自动更新用户在论文中提交的评论 它应该模仿订阅/发布服务的行为。每当有人在其客户机中提交评论时,其他客户机上的评论列表应自动更新 这可以使用《入门指南》中所述的PockDB: var db = new PouchDB('paper'); var remoteCouch = 'http://user:pass@mname.iriscouch.com/paper'; function sync() { var opts = {live:

我正在考虑使用PockDB作为一种解决方案,自动更新用户在论文中提交的评论

它应该模仿订阅/发布服务的行为。每当有人在其客户机中提交评论时,其他客户机上的评论列表应自动更新

这可以使用《入门指南》中所述的PockDB:

var db = new PouchDB('paper');
var remoteCouch = 'http://user:pass@mname.iriscouch.com/paper';

function sync() {      
  var opts = {live: true};
  db.replicate.to(remoteCouch, opts, syncError);
  db.replicate.from(remoteCouch, opts, syncError);
}
该应用程序包含不同的论文,每个论文都有自己的评论。当使用PockDB作为我的发布/订阅服务时,我有以下问题:

  • 这样使用数据库是个好主意吗

  • 如果我只想同步用户正在处理的当前论文的评论,我是否应该为每篇论文创建一个新的数据库?(这也意味着我将失去从单个数据库查询所有论文中所有用户评论的可能性)

  • 有没有办法只同步数据库的一部分?这样,即使是不同的论文,我仍然可以使用数据库保存所有的评论


是的,PockDB可以很好地用于实时内容。它不使用web套接字,但它使用长轮询,这对于大多数用例来说已经足够快了

听起来您可能应该为每篇论文创建一个单独的数据库,假设您想限制每篇论文的访问。CouchDB身份验证有点棘手,但基本上如果您想要控制读访问,您可以为用户提供对整个数据库的完全读访问或零读访问

也不用担心创建数千个数据库;在CouchDB中,“数据库”是便宜的


我唯一建议的另一件事是,您可能会喜欢,因为这样您就可以轻松地设置一个带有“论文”类型和“评论”类型的关系式数据库。

如果我使用验证函数将写评论限制在论文中(阅读评论不需要限制),是否可以使用
db.replicate(source,target,[options])
方法中的
filter
选项有选择地筛选同步数据库的哪些部分?当然,filter函数可以允许您复制数据库的任何子集。我只是想指出,如果你关心的是安全性,那么过滤函数就不能保护数据库不被别人读取他们不应该读取的数据。每当数据库的某个对象在某处发生更改时,它都会被更新。为此,我使用
$scope.$watch
。我现在唯一的问题是,当一个对象更改并保存到数据库时,
\u rev
字段也会更改,从而导致无限更新循环:)您知道如何解决这个问题吗?首先,在Freenode#PockDB IRC频道中,这样的问题可能比这里更好。:)我们可以更快地响应和迭代。第二,如果您在编写angular指令时遇到困难,那么Pocket中有一些angular库。我已经列出了它们。第三,如果您为每个用户击键更新文档,您的历史记录将增长!第四,我的解决方案是创建一个子文档,然后只查看它。e、 g.
{u rev:'foo',数据:{…}