我正在使用一些旧数据,其中某些架构有一个"混合"类型。
基本上有时候一个值会被引用一个ObjectID,但有时候它会成为一些文本(超级糟糕的设计)。
由于出现非ObjectID的时间,我无法正确填充此数据。
所以,对于我的实际问题:是否有可能创建一个有条件的填充(在集合上);我需要能够告诉填充者跳过那些other
值。
答案 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();
}
});