0

我正在尝试使用 Node.js 编写 MongoDB map/reduce 作业。我有调用 map reduce 的 node.js 代码正常工作,但我需要在 mapper 方法中调用 Node.js。看起来它将映射器(和减速器)解释为 Javascript,而不是 Node.js。

有没有办法将 mapper 和 reducer 作为 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

我不知道这是可能的。MongoDB 中的 M/R 在其自己的 JavaScript 环境中运行将链接到运行 node.js 的 JavaScript 环境。

于 2012-06-05T12:05:07.323 回答