【问题标题】:Mongoose.js conditional populateMongoose.js 条件填充
【发布时间】:2014-11-03 12:11:48
【问题描述】:

我正在处理一些旧数据,其中一些架构具有“混合”类型。

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

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

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

【问题讨论】:

    标签: node.js mongodb mongoose-populate


    【解决方案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();
        }       
    });
    

    【讨论】:

    • 从那以后我还没有证实这一点,但这似乎完全合理。当我有时间测试这个时,我会回到这个。我什至没有考虑过中间件——只是填充方法中的一个解决方案。
    猜你喜欢
    • 2014-03-02
    • 2016-03-03
    • 2012-09-28
    • 2012-06-14
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    相关资源
    最近更新 更多