我正在创建下面的映射函数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函数放在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"]]);
}
好吧,这是一个奇怪的。我现在已经打开了实际的设计文件,复制了它并删除了所有其他功能,现在它又开始工作了。