couchdb替换字符串在临时视图中有效,但在永久视图中无效



我正在编写一个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是您应该始终定义的基数

最新更新