Node.js Mongoose映射函数中未拾取闭合值
我正在尝试创建一个动态映射函数-即使用任意字段进行聚合。我原以为我可以使用闭包来实现这一点,但它不起作用-我得到一个错误,说明blah没有定义 我的测试代码-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
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似乎不喜欢它。