我正在将地址数据存储在Couchdb中,我正在寻找一种方法来获取只有值的数组,而不是每个记录的key:value。
这是当前的回复:
{"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响应消耗的带宽使用。我似乎无法找到将视图转换为简单数组的方法。建议?
答案 0 :(得分:3)
您获得的响应符合Couch基于REST的协议。要重新格式化,我们提供了两种方法:show functions和list functions。基本思路是一样的,但第一个适用于检索文档,列表功能适合你!
list函数在服务器内部运行查询,并使用您的JS代码发送任意变换的输出。您需要的API很简单:
getRow()
功能从视图中获取每条记录。obj
将JS对象toJSON(obj)
导出到字符串(包含JSON)。send(json)
将结果发送到客户端。如果包含数据的地图/缩小视图网址为/mydb/_design/myapp/_view/mydocs-by-user
且列表函数名称为mylist
,则会将重新格式化的结果发送给具有网址/mydb/_design/myapp/_list/mylist/mydocs-by-user
的客户端。
请参阅上面列出的列表功能文档以及“指南”中的“渴望教程”一章。