簡體   English   中英

當任何CouchDB數據更改時,執行對外部服務器的HTTP請求

[英]Execute HTTP request to an external server when any CouchDB Data changes

我在CouchDB中相當陌生,但是使用Fauxton UI成功執行了創建,更新,刪除數據的操作。 我有一些PouchDB客戶端,它們將使用HTTP協議直接與此CouchDB數據庫同步。 該PouchDB客戶端將通過另一台ASP.NET Identity服務器進行身份驗證,並將帶有其調用的Bearer令牌發送到CouchDB服務器。

我有一台遠程Windows服務器(使用ASP.NET Web API端點公開),該服務器具有權限管理的實現(使用ASP.NET標識),另一台服務器具有ElasticSearch數據庫(用於快速搜索)實例。

我的問題是,我想執行一些功能(使用JavaScript,Python或任何其他受支持的語言)來檢查該ASP.NET遠程服務器的權限,如果允許,然后繼續調用CouchDB。 我還想捕獲CouchDB的_changes事件,並對我的ElasticSearch實例執行另一個HTTP調用,以插入/更新此更改。

我已經看到,我可以編寫可以執行HTTP調用的Python / Ruby代碼。 但是我不明白如何將這些函數與我的CouchDB(實例/集群)掛鈎,以便可以調用和執行這些函數。

兩個JS模塊可以解決部分問題:

  • follow ,每次在跟隨的CouchDB數據庫上發生更改時執行一個函數
  • couch2elastic4sync ,使用follow模塊保持CouchDB數據庫和ElasticSearch索引同步

對於身份驗證問題 ,最好的方法是在CouchDB實例之前使用代理服務器,該代理服務器可以使用ASP.NET Identity服務器對與PouchDB請求一起發送的Bearer令牌進行身份驗證,然后再將其轉發到CouchDB。 聽起來您可能不得不自己寫這篇文章; 我不熟悉ASP.NET解決方案,但是我不認為CouchDB支持您自己需要做的事情。

要將更改從CouchDB轉換為您的ElasticSearch實例 ,可以嘗試@maxlath的答案,也可以嘗試https://github.com/elastic/elasticsearch-river-couchdb ,我在過去已經看到它可以成功工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM