查询和填充子文档时,如何检测和处理已删除的子文档?

时间:2014-08-29 19:16:47

标签: node.js mongodb mongoose

我有一个数据模型,其中包含另一个数据模型的ObjectID数组。

var ProductSchema = new Schema({
  images: {
    type: [{
        type: Schema.ObjectId,
        ref: 'Image'
    }],
    default: []
  },
});

当我查询Products并填充Image条记录时,如何检测某些图像记录何时被删除?

1 个答案:

答案 0 :(得分:0)

我猜你的意思是你的阵列中的某些图像可能已经删除了它的对象,所以你要检查它。你可以做的是在保存钩子中检查这个,如下所示:

ProductSchema
    .pre('save', function(next) {
        var Image = mongoose('Image');
        this.images.forEach(function(image) {
            Image.objects.findById(image, function(err, image) {
                if (!image) {
                    // This would mean the object has been removed so 
                    // the saved id is missing a reference...
                    ...
                }
            })
        })
        next();
    });