couchdb替换字符串在临时视图中工作,但不是永久性的

时间:2012-08-29 16:42:56

标签: view mapreduce couchdb

我正在编写一个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:在对象的属性值之后预期','或'}', 但是所有的{}匹配,我几乎在所有地方都放了','但没有任何作用。

在永久视图中是否有特殊字符或其他必须避免的内容,在临时视图中测试时我不会这样做?

1 个答案:

答案 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 是您应该始终定义的基数。