Mongoose.js有条件填充

时间:2014-09-10 00:03:54

标签: node.js mongodb mongoose-populate

我正在使用一些旧数据,其中某些架构有一个"混合"类型。

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

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

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

1 个答案:

答案 0 :(得分: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();
    }       
});