0

今天我的地图函数开始报告断言失败 13076 'recursive toObject' 代码。它昨天工作得很好。

这是我的地图功能:

function () {
    for(i=0; i<this.values.length; i++) {
        emit(this.values[i].id, {
            'id': this.values[i].id,
            'start_date': this.values[i].start_date,
            'end_date': this.values[i].end_date,
            'hash': this.values[i].hash,
            'url': this.values[i].url});
    }  
}

我尝试用 forEach 函数替换 for 循环,但结果是一样的。

具有范围变量限制映射函数到单个发射的有趣函数工作得很好:

function () {
    for(i=0; i<this.values.length; i++) {
        if(this.values[i].id == myId) {
            emit(this.values[i].id, {
                'id': this.values[i].id,
                'start_date': this.values[i].start_date,
                'end_date': this.values[i].end_date,
                'hash': this.values[i].hash,
                'url': this.values[i].url});
        }
    }
}

当然,我可以直接在代码中执行这个映射,但是当我真的需要使用 MapReduce 时,我不想再遇到这个错误。

4

1 回答 1

0

好的,所以错误消息真的很模糊,但问题似乎是由 'values' 数组中的 'id' 字段的重复值引起的。当我更改其中一个数组元素中的 id 时,该函数再次开始工作。

于 2012-08-21T09:12:02.247 回答