我需要使用 CouchDB 计算一项简单的任务。但我遇到了一些问题: 我无法正确转换 Sate 字符串表示形式中的时间戳。 这是我的功能:
function(doc) {
if (doc.temp > -50 && doc.temp < 50 ) {
var date = new Date(doc.time);
emit(date, doc.temp);
}
}
我需要将同一小时内发生的不同事件分组。但是这个类产生一个空日期对象,我不明白为什么。
此外,我计算平均值的reduce函数也不起作用,因为它溢出了。
function(keys, values) {
return sum(values)/values.length;
}
如果我更改为这种形式,我可以设法使第一个功能正常工作:
function(doc) {
if (doc.temp > -50 && doc.temp < 50 ) {
emit(Math.round(doc.time/360000), doc.temp);
}
}
最佳答案
您的reduce函数不起作用的原因是它不处理重新reduce情况。
在您的reduce 函数中,您可以在reduce 函数中处理map 函数结果的部分。在这种情况下,rereduce 参数为 false。
您的reduce函数还需要处理先前reduce调用的部分结果。在这种情况下,rereduce 参数为 true。
请参阅文档:http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views#Reduce_vs_rereduce
关于javascript - Couch db 日期和溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14903070/