2013-05-28 50 views
2

我存儲的地址數據在CouchDB中,並正在尋找一種方式來獲得只是值的數組,而不是關鍵字:值對每條記錄。CouchDB的JSON響應定製

這是當前響應:

{"total rows": 2438, "offset": 0, "rows":[ 
    {"id": "ec5de6de2cf7bcac9a2a2a76de5738e4", "key": "user_298774", "value": {"city": "Milano", "address":"Corso Como, 42b"}, 
    {"id": "a2a2a76de573ae4ec5de6de2cf7bcac9", "key": "user_276341", "value": {"city": "Vicenza", "address":"Via Quinto Sella, 118"} 
    ... (etc). 
]} 

我只真正需要的:

[{"city": "Milano", "address":"Corso Como, 42b"}, 
{"city": "Vicenza", "address":"Via Quinto Sella, 118"}, 
...] 

我真的需要減少帶寬的使用,一個JSON響應消耗。我似乎無法找到將視圖轉換爲簡單數組的方法。建議?

回答

3

響應你得到符合該沙發的基於REST協議。爲了重新格式化,提供了兩種方法:show functionslist functions。基本的想法是一樣的,但第一個適合檢索文檔和列表功能是給你的!

列表功能運行在服務器內的查詢,併發送你的JS代碼轉換輸出任意的。您需要的API很簡單:

  • 使用getRow()函數從視圖中獲取每條記錄。
  • 導出到(含JSON)字符串的JS對象objtoJSON(obj)
  • 通過send(json)發送輸出到客戶端。

如果地圖/縮小視圖URL數據是/mydb/_design/myapp/_view/mydocs-by-user和列表功能名稱是mylist得到重新格式化結果到客戶端的URL /mydb/_design/myapp/_list/mylist/mydocs-by-user

請參考上面提到的列表功能文檔和渴望已久教程指南中的一章。