今日、私のマップ関数はアサーション エラー 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});
}
}
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 を使用する必要があるときにこのエラーが発生することは望ましくありません。