我正在编写一个coucdhdb视图,我在字符串中省略单位(“sec”或“seconds”)并将其转换为数字,然后再发出值。我无法控制数据的存储方式。
我的观点如下:
"map" : "function(doc)
{
if (doc['Elapsed Time']){
var x = +doc['Elapsed Time'].replace(/ sec.*/, "");
emit([doc.User, doc.Date], x);
}
它在临时视图中正常工作,但在尝试使用curl进行PUT时遇到以下错误:{“error”:“bad_request”,“reason”:“UTF-8 JSON无效”}
如果我尝试直接在Futon的永久视图中保存视图,它会告诉我: JSON.parse:在对象的属性值之后预期','或'}', 但是所有的{}匹配,我几乎在所有地方都放了','但没有任何作用。
在永久视图中是否有特殊字符或其他必须避免的内容,在临时视图中测试时我不会这样做?
答案 0 :(得分:0)
而不是为它编写正则表达式,而只使用完全符合您要求的parseInt()
函数。
你就是这样做的。
"map": "function(doc) {
if (doc['Elapsed Time']) {
emit([doc.User, doc.Date], parseInt(doc['Elapsed Time'], 10));
}
}"
注意:我写了parseInt(doc['Elapsed Time'], 10)
,其中 10 是您应该始终定义的基数。