我有一个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')
,但要么调用不正确,要么Schema的格式不正确。如果我只是引用列表本身,就不会有这个问题:
lists: [{
type: Schema.ObjectId,
require: true,
ref: "List"
}]
但是我希望在每个列表旁边都有一个分配数组,那么我需要做什么来获得我想要的行为呢?
6条答案
按热度按时间ioekq8ef1#
我找到了答案:
populate('lists.list')
工作。感谢这个问题:Mongoose populate within an object?qlckcl4x2#
实际答案:
用这个,
额外费用:
这是一个对象的数组(list)。在JS中你可以像这样访问它,
并且MongoDB语法与JS语法99%相似。因此.................
qkf9rpyu3#
=〉因为它是一个对象数组,所以你可以这样做-:
Portfolio.populate('lists.list');
2.
因为它是一个数组,你只需要这样做-:
Portfolio.populate('lists');
个im9ewurl4#
如果您有嵌套架构
对我很有效
dxxyhpgq5#
gjmwrych6#
在我的情况下,当嵌套到数组时,Populate不起作用,我的Schema是
我是怎么解决的