Node.js Mongoose映射函数中未拾取闭合值

Node.js Mongoose映射函数中未拾取闭合值,node.js,mongodb,Node.js,Mongodb,我正在尝试创建一个动态映射函数-即使用任意字段进行聚合。我原以为我可以使用闭包来实现这一点,但它不起作用-我得到一个错误,说明blah没有定义 我的测试代码- o.map = (function(){ var blah = 'skill'; var mapIt = function() { for (var idx = 0; idx < this[blah].length; idx++) { var k

我正在尝试创建一个动态映射函数-即使用任意字段进行聚合。我原以为我可以使用闭包来实现这一点,但它不起作用-我得到一个错误,说明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
    })()
o.map=(函数(){
var blah=‘技能’;
var mapIt=函数(){
对于(var idx=0;idx
问候,,
Sean

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

看起来需要手动设置范围-


o、 范围={'blah':blah}

这似乎有效-o.scope={'blah':blah};感谢Peter的洞察,我认为可能是这样的,甚至尝试使用eval来构造一个带有硬编码动态值的函数——但hapi似乎不喜欢它。