没有 _changes 的 CouchDB 长轮询

CouchDB longpoll without _changes

我想在 couchDB 中使用 longpoll 选项,但没有 _changes 视图。 数据库有这个视图:

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

所以它会发出所有带有“工作”标签的文档。请注意,我在这个数据库中还有很多其他的东西。现在我想使用一个长轮询,只要数据库中没有带有作业标签的文档,连接就会保持打开状态。一旦有带有作业标签的文档,数据库就会将其发送给客户端,并且应该关闭连接。客户端现在可以完成这项工作,向数据库发送删除命令以删除该工作,然后再次开始监听。 所以我的想法是像这样调用视图:

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

但是,似乎只能将 longpoll 与 _changes 视图一起使用。任何解决方法?

感谢您的帮助

_changes 是您需要在您的案例中使用的提要。你可以使用它通过仅接收 "job" 标记文档的更改来过滤提要。您可以使用视图地图功能来执行此操作。

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

您将通过此提要收到数据库中 "job" 标记文档的任何更新 (create/update/delete)。