Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – MapReduce中的MongoDB动态变量大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有 mongodb mapreduce的node.js路由器:

app.get('/api/facets/:collection/:groupby',function(req,res) {
    var collection = db.collection(req.params.collection);
    var groupby = req.params.groupby;
    var map = function() {
      if (!this.region) {
        return;
      }
      for (index in this.region) {
        emit(this.region[index],1);
      }
    }
    var reduce = function(prevIoUs,current) {
      var count = 0;

      for (index in current) {
        count += current[index];
      }
      return count;
    }
    var options = {out: groupby + '_facets'};
    collection.mapReduce(map,reduce,options,function (err,collection) {
    collection.find(function (err,cursor) {
        cursor.toArray(function (err,results) {
                res.send(results);
            });            
    })
    })
});

这很好用.但我想使用我的groupby param.当我尝试做这样的事情时:

var map = function() {
    if (!this[groupby]) {
            return;
        }
    for (index in this[groupby]) {
            emit(this[groupby][index],1);
        }
  }

我收到TypeError:无法调用未定义的方法’find’.有没有办法创建这样的动态mapreduce函数

谢谢.

编辑:

哇!我自己做.只需将范围参数传递给mapreduce参数,如范围:{keys:groupby}然后我就可以在map函数中执行var key = this [keys]并使用键变量而不是this.region.大!

解决方法

哇!我自己解决了.我只是将范围参数传递给了mapreduce参数.

scope:{keys: groupby}

然后我就能做到

var key = this[keys]

在map map函数中使用key变量而不是this.region.大!

大佬总结

以上是大佬教程为你收集整理的node.js – MapReduce中的MongoDB动态变量全部内容,希望文章能够帮你解决node.js – MapReduce中的MongoDB动态变量所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: