3

我正在处理一些旧数据,其中一些架构具有“混合”类型。

基本上有时一个值将是一个引用的 ObjectID,但有时它会是一些文本(超级糟糕的设计)。

由于出现非 ObjectID 的次数,我无法正确填充此数据。

所以,对于我的实际问题:是否可以创建一个有条件的填充(在集合上)?我需要能够告诉填充跳过这些other值。

4

1 回答 1

1

是的,您可以检查 Mongoose API 参考上的中间件功能

http://mongoosejs.com/docs/middleware.html

您需要做的是在填充这些数据之前,验证数据是否是对象 ID,如果是对象 ID,则调用 next() 传递下一个函数,否则您只需返回,这将跳过它

例子

xSchema.pre('validate', function(next){
    var x = this;
    var checkXType = typeof x.id;

    if (checkXType === String) {
        return;
    } else {
        next();
    }       
});
于 2014-09-10T07:23:36.140 回答