1

動的マップ関数を作成しようとしています。つまり、任意のフィールドを使用して集計します。これにクロージャを使用できると思っていましたが、機能しません - blah is not defined というエラーが表示されます。

私のテストコード -

o.map = (function(){
        var blah = 'skill';
        var mapIt = function() {
            for (var idx = 0; idx < this[blah].length; idx++) {
                var key = this.skill[idx];
                var val = 1;
                emit(key, val);
            }
        }
        return mapIt
    })()

よろしく、 ショーン

4

2 に答える 2

2

そのため、map 関数は実際には、関数toString(ソース コード形式) を介してネットワーク経由で mongodb に送信され、mongodb 自体 (ノードではない) 内で実行されます。したがって、これは機能しません。これがscopeオプションの目的です。コンテキスト/引数/スコープとして map/reduce ジョブに提供する必要があるデータはすべて、scopeオブジェクトに設定する必要があります。

于 2013-08-27T20:56:35.170 に答える
0

スコープを手動で設定する必要があるようです-

o.scope = {'何とか': 何とか};

于 2013-08-27T20:57:13.177 に答える