我的查询是:
SELECT SUM(hrs) from Work WHERE EmployeeNumber =? AND EmployeeName=? AND WorkDate BETWEEN ? AND ?
我的沙发DB的关键
当我传递其他两个字符串,如员工编号和姓名时,我正在获取数据,但是当我添加日期时,我也得到空数组,但我看到这些日期有数据。
我尝试过将日期作为字符串发送,但没有结果。
?startkey = [“91444”,“Rick”,[2018,2,4]]& endkey = [“91444”,“Rick”,[2018,2,15]]
答案 0 :(得分:0)
正如评论中所述,您的视图功能如下所示:
map: "function (doc) {
if (doc.EmployeeNumber && doc.EmployeeName && doc.workDate) {
var date = doc.workDate.split('-');
var year = date[0];
var mon = date[1]; if(mon.charAt( 0 ) == '0') { mon = mon.slice( 1 ); }
var day = date[2]; if(day.charAt( 0 ) == '0') { day = day.slice( 1 ); }
emit(doc.EmployeeNumber,doc.EmployeeName,[Number(year), Number(mon), Number(day)], doc.hrs);
}
}",
reduce: "_sum"
在你的地图功能中,你发出四件事:
emit(
doc.EmployeeNumber,
doc.EmployeeName,
[Number(year), Number(mon), Number(day)],
doc.hrs
);
中所述
emit()
函数总是有两个参数:第一个是key
,第二个是value
。
因此,您的地图功能看起来并不正确。