【问题标题】:Map function does not execute after saving保存后地图功能不执行
【发布时间】:2013-05-16 09:14:48
【问题描述】:

我正在创建下面的地图函数 chouchdb 1.3.0。如果我将它作为临时视图运行它可以正常工作,但是一旦我保存它,它就无法编译。

function(doc) {
    var datestamp = convert_date(doc["report"]["period"]);
    var report_suite = doc["report"]["reportSuite"]["id"];
    var segment = doc["report"]["segment_id"];
    emit([report_suite, segment, datestamp], [doc["report"]["elements"][0]["id"]]);
  }

function convert_date(date){
    var months = {"Jan": "01", "Feb": "02", "Mar": "03", "Apr": "04", "May": "05",    "Jun": "06", "Jul": "07", "Aug": "08", "Sep": "09", "Oct": "10", "Nov": "11", "Dec": "12" };
    var year = date.substring(13, 17);
    var month = months[date.substring(8,11)];
    var day = date.substring(5,7).replace(" ", "0");
    var datestamp = year + month + day;
    return datestamp;
}

错误信息是:“Expression does not eval to a function”

我用谷歌搜索并尝试失败:

  • 在函数周围放置括号
  • 内联 convert_date 函数

【问题讨论】:

  • 你是如何内联 convert_date() 函数的?我认为这应该有效。
  • 刚刚定义了 var date = [what now in the function call] 它也不起作用。更奇怪的是,所有选项在代码编辑并按下运行后都有效,但在保存视图并再次运行后就不行了。
  • 保存视图后,您是否尝试直接向视图的 URL 发送 GET 请求?这可能会触发 couch 重建 B-tree 而无需依赖 Futon。您无需等待请求完成,但如果您查看服务器上的日志和/或top,您应该会看到它正在重新构建树。

标签: javascript mapreduce couchdb


【解决方案1】:

如果将 convert_date 函数放在 map 函数中会怎样?

  function(doc) {
    var convert_date = function(date) {
      var months = {"Jan": "01", "Feb": "02", "Mar": "03", "Apr": "04", "May": "05",    "Jun": "06", "Jul": "07", "Aug": "08", "Sep": "09", "Oct": "10", "Nov": "11", "Dec": "12" };
      var year = date.substring(13, 17);
      var month = months[date.substring(8,11)];
      var day = date.substring(5,7).replace(" ", "0");
      var datestamp = year + month + day;
      return datestamp;
    }
    var datestamp = convert_date(doc["report"]["period"]);
    var report_suite = doc["report"]["reportSuite"]["id"];
    var segment = doc["report"]["segment_id"];
    emit([report_suite, segment, datestamp], [doc["report"]["elements"][0]["id"]]);
  }

【讨论】:

    【解决方案2】:

    好吧,这很奇怪。我现在打开了实际的设计文档,复制了它并删除了所有其他功能,现在它又可以工作了。

    【讨论】:

      猜你喜欢
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-25
      相关资源
      最近更新 更多