сегодня моя функция карты начала сообщать об ошибке утверждения 13076 «рекурсивный код 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});
}
}
Я попытался заменить цикл for функцией forEach, но результат тот же.
Что интересно, функция с переменной области видимости, ограничивающая функцию карты одним испусканием, работает просто отлично:
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.