Mongoose错误填充虚拟

我正在使用节点和mongo工作。 我有本地和'活'在服务器上进行testing。 该项目的本地副本根本没有问题,但现场版本崩溃的错误:

/root/farm_api/node_modules/mongoose/lib/model.js:3002抛出错误('如果你正在填充一个虚拟的,你必须设置'+ ^

错误:如果您正在填充虚拟,则必须在填充(/ root / farm_api / node_modules / mongoose)时在getModelsMapForPopulate(/root/farm_api/node_modules/mongoose/lib/model.js:3002:13)处设置localField和ForeignField选项/lib/model.js:2647:15)在_populate(/root/farm_api/node_modules/mongoose/lib/model.js:2615:5)在Function.Model.populate(/ root / farm_api / node_modules / mongoose / lib /立即在/model.js:2575:5)。 (/root/farm_api/node_modules/mongoose/lib/query.js:1276:17)在Immediate._onImmediate(/root/farm_api/node_modules/mongoose/node_modules/mquery/lib/utils.js:137:16)在processImmediate [as _immediateCallback](timers.js:383:17)

我不知道是什么问题,我认为它与一个这样的API调用,我使用aggregate$lookup可以在这里看到:

 api.dbm.Field.aggregate([ { $lookup: { from: 'tasks', localField: '_id', foreignField: 'field', as: 'fieldTask' } }, { $lookup: { from: 'stocks', localField: 'owner', foreignField: 'owner', as: 'stock' } } ], function(err, result){ if(err) console.log(err); else { var aggregatedData = result; api.checkStaffRole(req.query.as, req.user._id, req.query.fid, res, function(fields, ids) { aggregatedData.forEach(function(record, index, object){ if(!api.lodash.find(fields, {'_id': record._id})){ object.splice(index, 1); } }); api.lodash.forEachRight(aggregatedData, function(record, index, object){ if(!api.lodash.find(record.staff, {'user': req.user._id})){ object.splice(index, 1); } }); res.json(api.buildResponse(null, aggregatedData)); }); } }); 

我认为这是因为他们在调用api的时候在集合中没有logging,但为什么它在本地工作,只有在服务器上才有问题? 两台服务器都安装了mongo 3.2,在npm中,我在两个副本上都使用了mongoose 4.6.8(在本地使用4.6.4,没有任何问题取代了软件包,并且仍然没有问题)。
更新 :通过npm重新安装mongodb和mongoose两个版本现在都有完全相同的包(由于我使用package.json中的^ ),我仍然不能在本地主机上复制错误。
服务器上的代码打印出结果值并显示在控制台上,以便聚合数据,然后在执行后立即崩溃

再次回到那里所有的代码,并决定回滚更改,似乎我是4更新后面的mongoose和版本4.6.7他们补充

修正(填充):当尝试填充没有正确选项的虚拟时抛出更多的描述性错误#4602

我从来没有照顾过4.6.4版本,因为它给了我想要的结果我怀疑我的函数现在已经过时了4.6.4以上的版本。 这个答案的道德检查package.json确保如果这样或类似的事情发生在你身上,你确保你没有在你的包之前用“^”设置npm,因为这将在适当的更新版本可用时进行更新。