簡體   English   中英

CouchDB覆蓋基本JSON文檔

[英]CouchDB override a base JSON document

CouchDB中是否有用於創建JSON文檔的標准策略(或公認的最佳實踐):

  • 基於另一個文件。
  • 包含少量JSON屬性,這些屬性表示對原始文檔的替代。

收到請求后,CouchDB會計算應用了覆蓋的結果JSON文檔,並將其作為響應返回。 用戶不需要知道或關心它是一個復合文檔。

那是一個很好的問題,因為您要求可能性和最佳實踐。 答案是-這取決於;-)

通常,您可以使用CouchDB _list來實現。 例如,您從_list所基於的_view中獲取了兩個文檔,計算了復合文檔並對其進行了響應。 缺點是該服務器端計算與性能非常相關。 例如,在每個用戶會話中都會要求您提供復合文檔時,請不要使用它。 但是,如果您的用例很簡單,例如每晚應該有來自另一服務的請求,那應該沒問題。

當您采用替代方法時,CouchDB會愛上您,該方法導致復合文檔隨時可以存儲在索引中。

如果要完全存儲復合文檔,則可以使用CouchDB _update處理程序。 您可以從有效負載中獲取文檔的自定義屬性,並從數據庫中獲取默認文檔,將所有內容合並到復合文檔中,並將其存儲在唯一的ID下(或覆蓋默認文檔)。

最后但並非最不重要的一點是,您還可以使用兩種基於CouchDB _view的方法。 兩者都不會提供復合文檔,但會在一個請求中提供默認文檔和自定義覆蓋。 第一種方法是使用多部分鍵構建視圖,該鍵將父文檔(默認數據)和子文檔(覆蓋)組合在一起-第二種方法是使用鏈接數據創建視圖:將自定義設置作為視圖行的值發出,用默認文檔的_id覆蓋視圖行_id。 當使用查詢參數?include_docs=true請求查看行時,默認數據和自定義覆蓋將包含在結果中。

暫無
暫無

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

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