Node.jsを使用してMongoDBmap/reduceジョブを作成しようとしています。map reduceを呼び出すnode.jsコードが正しく機能していますが、mapperメソッドでNode.js呼び出しを行う必要があります。マッパー(およびレデューサー)をNode.jsではなくJavascriptとして解釈しているようです。
Node.js関数としてマッパーとレデューサーを実行する方法はありますか?JavascriptからNode.jsを呼び出すためにできるトリックや回避策はありますか?
私のコード:
var mongo = require('mongodb'),
Server = mongo.Server,
Db = mongo.Db;
var fbFeed = require('./getFeeds');
var server = new Server('localhost', 27017, {auto_reconnect: true});
var db = new Db('test', server);
var map = function () {
fbFeed.getFbFeed(this.dbId, function(record) {
emit(record.fbId, record);
});
}
var reduce = function (key, values) {
return values;
}
db.open(function (err, db) {
if (!err) {
db.collection('facebookToScan', function (err, collection) {
if (!err) {
collection.mapReduce(map, reduce, {'out': "fbClicks"}, function(err, collection) {
});
}
});
}
});
(ここで、'./getFeeds'にはgetFbFeed
)が含まれます
そして私のエラーは:
mr failed, removing collection :: caused by :: 9014 map invoke failed: JS Error: ReferenceError: fbFeed is not defined nofile_b:1