关闭超过Mongoose Map功能未获取的值

时间:2013-08-27 20:22:18

标签: node.js mongodb

我正在尝试创建动态地图功能 - 即使用任意字段进行聚合。我以为我可以使用一个闭包,但它不起作用 - 我得到一个错误,说明没有定义blah。

我的测试代码 -

o.map = (function(){
        var blah = 'skill';
        var mapIt = function() {
            for (var idx = 0; idx < this[blah].length; idx++) {
                var key = this.skill[idx];
                var val = 1;
                emit(key, val);
            }
        }
        return mapIt
    })()

此致 肖恩

2 个答案:

答案 0 :(得分:2)

因此,map函数实际上是通过函数toString(源代码形式)通过线路发送到mongodb,以便在mongodb本身(非节点)内执行。因此,这不起作用。这是scope选项的用途。您需要在scope对象中设置需要作为上下文/参数/范围提供给map / reduce作业的任何数据。

答案 1 :(得分:0)

看起来你必须手动设置范围 -

o.scope = {'blah':blah};