简单的问题:我想对数据库中的一些更改做出反应,但只对那些导致某个view1
. 也就是说,我对数据库中的所有更改都不感兴趣,只对影响view1
. 我不是在这里谈论过滤器,只是关于视图+更改。像这样的东西(尽管这可能不正确):
http://localhost:5984/db/_design/doc1/_view/view1/_changes
CouchDB 是否完全支持这一点?这有意义吗?
简单的问题:我想对数据库中的一些更改做出反应,但只对那些导致某个view1
. 也就是说,我对数据库中的所有更改都不感兴趣,只对影响view1
. 我不是在这里谈论过滤器,只是关于视图+更改。像这样的东西(尽管这可能不正确):
http://localhost:5984/db/_design/doc1/_view/view1/_changes
CouchDB 是否完全支持这一点?这有意义吗?
这是可能的,但以另一种方式。从 1.1.0 版本开始,CouchDB 能够使用 map 函数作为更改源的过滤器。这就像常规过滤器一样工作:如果为更改的文档至少发出一次键值对,则意味着他通过了过滤器并_changes
产生了关于他的记录。如果您只需要获取特定视图的新更新,则需要指定起始since
序列号 - 它可以很容易地_design/ddoc-name/_info
从 field 的资源中检索view_index/update_seq
。从 1.3 版本开始,您还可以指定since=now
从当前时间点收听更新。
请注意,此视图过滤器不使用视图索引,并且在发生新更改时不会更新他。此外,还有一组补丁可以以您可能感兴趣的方式改进视图过滤器。