2013-05-16 49 views
1

我正在创建下面的映射函数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; 
} 

的错误信息是:“表达不EVAL的功能”

我用Google搜索和不成功的尝试:

  • 配售的括号功能
  • 内联convert_date功能
+2

你是如何内联convert_date()函数的?我认为这应该起作用。 – djc

+0

刚刚定义** var date = [现在在函数调用中] **它也不起作用。更好奇所有选项都是在代码编辑和按下运行之后工作的,但是在保存视图并再次运行之后才能工作。 – Hans

+0

保存视图后,您是否尝试直接向视图的URL发送GET请求?这可能会触发沙发重建B树而不需要依靠蒲团。您无需等待请求完成,但如果您查看服务器上的日志和/或“顶部”,则应该看到它重新构建树。 – kgraney

回答

2

如果将convert_date函数在地图功能里面?

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"]]); 
    } 
+0

不幸的是,这也没有工作。 – Hans

0

好的,这是一个奇怪的。我现在打开了实际的设计文档,将其复制并删除了所有其他功能,现在又重新开始工作。