当任何CouchDB数据发生变化时,向外部服务器执行HTTP请求

时间:2016-10-18 10:08:28

标签: python asp.net oauth couchdb httprequest

我在CouchDB中相当新,但使用Fauxton UI成功执行了创建,更新和删除数据。我有一些PouchDB客户端,它们将使用HTTP协议直接与此CouchDB数据库同步。此PouchDB客户端将使用另一个ASP.NET身份服务器进行身份验证,并将其每次调用发送给Beader Token,并将其发送到CouchDB服务器。

我有一个远程Windows服务器(使用ASP.NET Web API端点公开),它具有权限管理(使用ASP.NET标识)的实现,还有另一个具有ElasticSearch数据库(用于快速搜索)实例的服务器。

我的问题是,我想执行一些功能(使用JavaScript,Python或任何其他支持的语言)来检查该ASP.NET远程服务器的权限,如果允许,则继续调用CouchDB。 我还想捕获CouchDB的_changes事件并对我的ElasticSearch实例执行另一个HTTP调用以插入/更新此更改。

我已经看过,我可以编写可以执行HTTP调用的Python / Ruby代码。但我无法理解如何将这些函数与我的CouchDB(实例/集群)挂钩,以便可以调用和执行这些函数。

2 个答案:

答案 0 :(得分:0)

两个可以解决部分问题的JS模块:

  • follow,每次在随后的CouchDB数据库上发生更改时执行函数
  • couch2elastic4sync,使用follow模块保持CouchDB数据库和ElasticSearch索引同步

答案 1 :(得分:0)

对于身份验证问题,您最好的方法是在CouchDB实例前使用代理服务器,该代理服务器可以在转发之前使用ASP.NET身份服务器对使用PouchDB请求发送的Bearer令牌进行身份验证他们到CouchDB上。听起来你可能要自己写这个;我不熟悉ASP.NET解决方案,但我不认为CouchDB支持您自己需要做的事情。

要从CouchDB更改到您的ElasticSearch实例,您可以尝试@maxlath的答案或尝试https://github.com/elastic/elasticsearch-river-couchdb我过去曾见过的成功工作。