2015-08-31 95 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變量模塊

中如果有問題 - 只是從新文件中的示例代碼開始並將其擴展,以便您可以找到出錯的地方