我正在编写一个couchdddb视图,在该视图中,我省略了字符串中的单位("sec"或"seconds"),并在发出值之前将其转换为数字。我无法控制数据的存储方式。
我的观点是这样的:
"map" : "function(doc)
{
if (doc['Elapsed Time']){
var x = +doc['Elapsed Time'].replace(/ sec.*/, "");
emit([doc.User, doc.Date], x);
}
它在临时视图中正常工作,但当我尝试使用curl放置它时,我遇到了以下错误:{"error":"bad_request","reason":"invalid UTF-8 JSON"}
如果我试图将视图直接保存在Futon的永久视图中,它会告诉我:JSON.parse:对象中的属性值后应为","或"}",但在所有的比赛中,我几乎在所有地方都用了",",但什么都不管用。
在临时视图中测试时,是否有特殊的字符,或者在永久视图中必须避免的其他字符?
不必为此编写正则表达式,只需使用parseInt()
函数即可,它可以完全满足您的要求。
你就这么做吧。
"map": "function(doc) {
if (doc['Elapsed Time']) {
emit([doc.User, doc.Date], parseInt(doc['Elapsed Time'], 10));
}
}"
注意:我写了parseInt(doc['Elapsed Time'], 10)
,其中10是您应该始终定义的基数