猫鼬& lodash:__。map返回空数组

时间:2015-08-31 12:18:20

标签: node.js mongodb mongoose lodash

我们在Mongoose拥有多对多的伙伴关系。在保存之前,该对象被赋予迭代它引用的所有对象。我们正在尝试使用lodash来生成具有正确上下文的函数,但我们得到的只是null

的数组

以下是代码:

PartnerSchema.pre("save", function(done) {
  var updaters = __.map(this.partner, function(partner) { // this.partner is an array of ObjectIds
    // this runs, and the argument is fine
    var update = function updateThing(cb) {
      Company.findOne({_id: partner}, function(err, company) {
        if (err) return cb(err);
        company.partners = __.map(company.partners, function(partner) {
          if (partner._id === this._id) {
            return this;
          }
          else {
            return partner;
          }
        })
        company.save(function(err, rowsAffected) {
          cb(err);
        })
      })
    }
    console.log(update); // [Function]
    return update;
  })
  // updaters is now [null, null]
  async.parrallel(updaters, function() {
    done();
  })
})

编辑:我们发现了为什么没有发出错误。 Mongoose ate them all!。降级到4.0.8现在至少显示错误。未定义不是一个函数,正如预期的那样。

1 个答案:

答案 0 :(得分:1)

var updaters = _.map([1,2,3], function(i) {
  var update = function updateThing(j) { return console.log(i, j) };
    console.log(update);
    return update
})

示例代码在lodash网站上正常运行

尝试检查您的this.partner参数,并检查您是否在该模块中的任何位置重新定义了updateupdaters个变量

如果您遇到问题 - 只需从新文件中的示例代码中获取并扩展它,以便找到错误的内容