Skip to main content
 首页 » 编程设计

javascript之Mongoose 填充包含 ref 的对象数组

2024年04月18日19jpfss

我有一个 Mongoose 架构,其中包含一个对象数组 lists,其中包含对另一个集合的引用和一个嵌套的数字数组:

var Schema, exports, mongoose, schema; 
     
mongoose = require("mongoose"); 
     
Schema = mongoose.Schema; 
     
schema = new Schema({ 
    name: { 
        type: String, 
        required: true, 
        unique: true, 
        trim: true 
    }, 
    lists: [{ 
        list: { 
            type: Schema.ObjectId, 
            require: true, 
            ref: "List" 
        }, 
        allocations: [{ 
            type: Number, 
            required: true 
        }] 
    }], 
    createdAt: { 
        type: Date, 
        "default": Date.now 
    }, 
    updatedAt: { 
        type: Date 
    } 
}); 
     
exports = module.exports = mongoose.model("Portfolio", schema); 

但是,如果没有出现 TypeError: Cannot read property 'ref' of undefined ,我就无法让 populate 按预期工作。我已经尝试过 populate('list')populate('lists list') 但我要么没有正确调用,要么我的架构未正确形成。如果我简单地引用列表本身,我就不会遇到这个问题:

lists: [{ 
    type: Schema.ObjectId, 
    require: true, 
    ref: "List" 
}] 

但我希望每个列表旁边都有分配数组。我需要做什么才能获得我想要的行为?

请您参考如下方法:

我找到了答案:populate('lists.list') 有效。感谢这个问题:Mongoose populate within an object?