【发布时间】:2014-11-03 12:11:48
【问题描述】:
我正在处理一些旧数据,其中一些架构具有“混合”类型。
基本上有时一个值将是一个引用的 ObjectID,但其他时候它会是一些文本(超级糟糕的设计)。
由于出现非 ObjectID 的次数,我无法正确填充此数据。
所以,对于我的实际问题:是否可以创建一个有条件的填充(在集合上)?我需要能够告诉填充跳过那些 other 值。
【问题讨论】:
标签: node.js mongodb mongoose-populate
我正在处理一些旧数据,其中一些架构具有“混合”类型。
基本上有时一个值将是一个引用的 ObjectID,但其他时候它会是一些文本(超级糟糕的设计)。
由于出现非 ObjectID 的次数,我无法正确填充此数据。
所以,对于我的实际问题:是否可以创建一个有条件的填充(在集合上)?我需要能够告诉填充跳过那些 other 值。
【问题讨论】:
标签: node.js mongodb mongoose-populate
是的,您可以在 Mongoose API 参考中检查中间件功能
http://mongoosejs.com/docs/middleware.html
您需要做的是在填充这些数据之前,验证数据是否是对象 ID,如果是对象 ID,则调用 next() 以传递下一个函数,否则您只需返回,this会跳过它
例子
xSchema.pre('validate', function(next){
var x = this;
var checkXType = typeof x.id;
if (checkXType === String) {
return;
} else {
next();
}
});
【讨论】: