首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReferenceError

ReferenceError
EN

Stack Overflow用户
提问于 2014-02-03 08:46:13
回答 1查看 2.7K关注 0票数 1

我试图在mongodb映射/reduce函数中使用一个外部对象。如果对象具有它应该访问的变量,则会发生错误。

例如:

代码语言:javascript
复制
var conn = new Mongo();
var db = conn.getDB("test");

var HelperClass = function() {
  var v = [1, 2, 3];

  this.data = function() {
    return v;
  };
};

var helper = new HelperClass();

var map = function() {
  helper.data().forEach(function(value) {
    emit(value, 1);
  });
};

var reduce = function(key, values) {
  var count = 0;
  values.forEach(function(entry) {
    count += entry;
  });
  return count;
};

db.test.mapReduce(map, reduce, {
  out: "temp",
  scope: {
    helper: helper
  }
});

mongodb的输出:

映射减少失败:{ "errmsg“:”异常: ReferenceError: v未定义“,”代码“:16722,"ok”:0} at src/mongo/shell/收藏品. is :970

这是一种预期的行为吗?在mapReduce中还有其他使用外部对象的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2014-02-03 08:57:19

问题在于这个功能:

代码语言:javascript
复制
var HelperClass = function() {
  var v = [1, 2, 3];

  this.data = function() {
    return v.data;
  };
};

因为:

代码语言:javascript
复制
return v.data;

与实际变量(实际上是this.v.data )的作用域不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21522927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档