我们在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现在至少显示错误。未定义不是一个函数,正如预期的那样。
答案 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
参数,并检查您是否在该模块中的任何位置重新定义了update
和updaters
个变量
如果您遇到问题 - 只需从新文件中的示例代码中获取并扩展它,以便找到错误的内容