你可以在mongoose中减少填充的子数组吗?

时间:2015-03-05 21:17:06

标签: node.js mongoose

我填充了一个子数组:

Model.populate(cars, 'partIds', function(err, cars) { ...

我这样做,因为我需要查看零件对象。但是有些情况下我不想返回那个填充的数组。

检查docs在toObject选项中的depopulate。但是,当调用toObject来确定我是否要减少填充时,我没有所需的信息。

更糟糕的是,看起来我必须循环所有返回的汽车并在每个汽车对象上调用toObject。

是否可以减少数组:

Model.depopulate(cars, 'partIds, function(err, cars) { ...

3 个答案:

答案 0 :(得分:0)

在这种情况下,我们只将属性设置为填充对象的_id。

car.part = car.part._id

从未使用填充对象数组,但我认为您可以遍历数组。

答案 1 :(得分:0)

我个人只是做了Reto的建议,但你也可以直接从文档中删除。像这样:

cars.forEach(function (car) { car.depopulate('partIds'); });

请参阅:Mongoose#Document.depopulate

答案 2 :(得分:0)

虽然这个答案对党来说太迟了,但这应该有所帮助:

const objectifiedCar = car.toObject();
delete objectifiedCar["part_name"];