Mongoose.js有条件的填充

我正在处理一些旧数据,其中一些模式具有“混合”types。

基本上有时候一个值会被引用的ObjectID,但有时候会是一些文本(超级糟糕的devise)。

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

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

是的,你可以这样做,检查Mongoose API参考中的中间件function

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

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

 xSchema.pre('validate', function(next){ var x = this; var checkXType = typeof x.id; if (checkXType === String) { return; } else { next(); } });