2017-03-09 45 views
1

是否可以從CouchDB中的文檔更新處理程序中查詢(GET)文檔?在文檔更新處理程序中獲取文檔

我已經寫在CouchDB中2.0一個簡單的文件更新處理,以接受來自第三方(CognitoForms)一個POST。這工作正常,我從他們的JSON負載中獲取ID並將其用作doc _id。

然後,您可以指定一個「更新」 URI在CognitoForms,這樣我就可以創建一個新的更新處理程序或使用相同的一個。然而,在CognitoForms:

  • 更新做了POST而不是PUT
  • 似乎沒有要發送任何查詢方式參數

由於ID爲這所需要的文件要更新是在體內,我可以用它來查詢數據庫中的文檔,獲取_rev,並用_id和_rev返回有效負載來執行更新。但是,我根本不知道是否可以在更新處理程序中執行此類查詢。我覺得我要麼失去了一些顯而易見的東西,要麼我有一個很好的理由,我不會這樣做。

非常感謝

編輯:我要補充一點,我知道我可以創建一個小的應用程序來解析轉發到CouchDB的前請求,但我很有興趣看看我是否能實現這個CouchDB中只瞭解我能夠在沒有另一層的情況下獲得多遠!

回答

1

你的具體情況,這是非常難以做到這一點。文檔更新處理程序基本上是一個純函數,它獲取它所需的數據並返回響應,但無法伸出數據庫。

如果添加一個文件編號的URL,更新函數從數據庫作爲參數文檔。詳情請參閱the CouchDB docs for update functions

的方式一個可能的解決方案是使用在CouchDB中的重寫,以便從身體提取的ID。在CouchDB 2.0中,rewrites as functions has been introduced的新方法。

對於挑戰極限,使用重寫功能爲這個聽起來很有趣。但對於生產用例,創建一個解析主體的小型node.js應用程序可能更容易,更易於維護。

+0

很好的答案,非常感謝。真的很高興知道重寫功能,因爲它以某種方式傳遞給我。我同意這可能不是生產用途的最佳選擇,但肯定有興趣看看。 – gtek