2013-05-28 53 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

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