2015-08-31 66 views
0

我们在Mongoose中拥有多对多的合作关系。该对象支持在保存之前迭代它引用的所有对象。我们正在尝试使用lodash生成具有正确的上下文中的功能,但我们所得到的是nullmongoose&lodash:__.map返回空数组

这里一个数组的代码:

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
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变量模块

中如果有问题 - 只是从新文件中的示例代码开始并将其扩展,以便您可以找到出错的地方