Mongoose.js 条件填充
Posted
技术标签:
【中文标题】Mongoose.js 条件填充【英文标题】:Mongoose.js conditional populate 【发布时间】:2014-11-03 12:11:48 【问题描述】:我正在处理一些旧数据,其中一些架构具有“混合”类型。
基本上有时一个值将是一个引用的 ObjectID,但其他时候它会是一些文本(超级糟糕的设计)。
由于出现非 ObjectID 的次数,我无法正确填充此数据。
所以,对于我的实际问题:是否可以创建一个有条件的填充(在集合上)?我需要能够告诉填充跳过那些 other
值。
【问题讨论】:
【参考方案1】:是的,您可以在 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();
);
【讨论】:
从那以后我还没有证实这一点,但这似乎完全合理。当我有时间测试这个时,我会回到这个。我什至没有考虑过中间件——只是填充方法中的一个解决方案。以上是关于Mongoose.js 条件填充的主要内容,如果未能解决你的问题,请参考以下文章