2
私は下記の定義と同様、他の機能(すなわち依存性注入)でパラメータ化することができ、私のMapReduceコードのためのヘルパー関数を定義したい
var helper = function(f) {
return function(x) {
return f(x); // just an example
};
}
はモンゴの呼び出しMapReduceは、私がスコープに(すでに解決)関数を渡す:
var options = {
scope: {
doStuff: helper(someFun)
},
…
};
var map = function() { … };
var reduce = function(key, values) { doStuff(…); … };
db.collection('test').mapReduce(map, reduce, options);
私はf
が返される関数でsomeFun
が含まれていますし、マップで使用することができるかの機能を削減することを期待します。しかし、それは、MapReduceは失敗していないとモンゴレポート:
はこれが行われることはできますか?スコープ/クロージャが保持されるように関数を書き直す必要がありますか?可能であれば、
{ MongoError: ReferenceError: f is not defined : …
f
をスコープに定義しないようにしたいと思っています。これは将来的に壊れる可能性があるためです(開発者はスコープに必要な機能をすべて忘れてしまうなど)
Javascriptの 'this'キーワードはそうではありませんか? – Deano
正しい方法で 'this'を使って私の問題を解決できてうれしく思いますが、私の質問とは無関係だと思います。 – knittl