0

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
4

1 に答える 1

1

私はこれが可能であることを認識していません。独自の JavaScript 環境で実行される MongoDB の M/R は、node.js が実行される JavaScript 環境にリンクします。

于 2012-06-05T12:05:07.323 に答える