为什么CouchDB的视图结果中包含十六进制数字?我该怎样摆脱它们?
7f
{"total_rows":108,"offset":0,"rows":[
{"id":"5c718dbd01bc0cde8152e08ed6003405","key":"2013-03-19T22:43:27.2683661Z","value":0}
5b
,
...
{"id":"5c718dbd01bc0cde8152e08ed6037404","key":"2013-03-19T23:07:35.5972058Z","value":0}
5b
,
{"id":"5c718dbd01bc0cde8152e08ed60376e5","key":"2013-03-19T23:07:35.6062063Z","value":0}
4
]}
1
0
TL; DR
我是CouchDB的新手,正在研究将其用作事件日志的数据库。我创建了一个简单的map函数来按日期查看事件日志:
function(doc)
{
if (doc.DateTime)
{
emit(doc.DateTime, doc);
}
}
当我使用Fiddler使用以下请求测试此视图时:
GET http://localhost:5984/stuff/_design/eventlog/_view/datetime
Host: localhost:5984
User-Agent: Fiddler
返回的结果包括不是JSON结构一部分的十六进制数字。因此返回的JSON无效。为什么这些十六进制数字包含在结果中,我怎样才能摆脱它们?
我正在使用Windows(x86)CouchDB版本1.2.1。
答案 0 :(得分:2)
奇怪的十六进制数用于所谓的chuncked传输编码。这是HTTP响应以流式格式提供的一种方式,而不是客户端必须等待整个响应准备就绪。十六进制数表示下一个块的长度。
我认为分块的使用与请求的Accept值无关,但我不确定。
答案 1 :(得分:-1)
要获得纯JSON结果,您必须在HTTP请求中包含Accept: application/json
标头。
如果省略Accept
标题,CouchDB将以更适合在Web浏览器中显示的方式返回结果。结果将采用JSON格式,但内容类型为text/plain
。
请参阅Apache CouchDB 1.3 Manual Section 2.2.1. Request Headers。
十六进制数是Chunked transfer encoding的结果。