没有_changes的CouchDB longpoll

时间:2018-12-04 14:09:18

标签: couchdb long-polling

我想在沙发数据库中使用longpoll选项,但不使用_changes视图。 数据库具有以下视图:

function (doc) {
  if(doc.job)
    emit(doc._id, 1);
}

因此它将发出所有带有标签“ job”的文档。请注意,此数据库中还有很多其他内容。现在,我想使用longpoll,只要数据库中没有带有job标签的文档,连接就保持打开状态。一旦有了带有job标签的文档,数据库就会将其发送给客户端,并且应该关闭连接。客户端现在可以执行该作业,将删除命令发送到db以删除该作业,然后再次开始侦听。 所以我的想法是这样调用视图:

http://mycouch/mydb/_design/visualize/_view/get_jobs?feed=longpoll&include_docs=true

但是,似乎只能在_changes视图中使用longpoll。任何解决方法?

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

_changes是您需要使用的供稿。可以通过仅接收“作业”标记的文档的更改来使用它过滤提要。您可以使用视图地图功能来做到这一点。

http://mycouch/_changes?filter=_view&view=visualize/get_jobs&feed=logpoll&include_docs=true

通过此供稿,您将收到数据库中“作业”标签文档的所有更新(创建/更新/删除)。