【发布时间】:2017-05-22 02:34:14
【问题描述】:
我正在尝试填充子架构字段。
一个项目包含多个ProjectFilters。 每个 ProjectFilter 引用一个 FilterValue。 FilterValue 包含在一个(并且只有一个)Filter 中。
项目架构
const ProjectSchema = new Schema({
title: String,
filters: [ProjectFilter.schema],
}, {
timestamps: true,
toJSON: {
virtuals: true,
},
});
ProjectFilterSchema
const ProjectFilterSchema = new Schema({
filterValue: {
type: mongoose.Schema.Types.ObjectId,
ref: 'FilterValue',
},
isMain: {
type: Boolean,
default: false,
},
}, {
toJSON: {
virtuals: true,
},
});
FilterSchema
const FilterSchema = new Schema({
label: String,
values: [FilterValue.schema],
}, {
timestamps: true,
toJSON: {
virtuals: true
},
});
FilterValueSchema
const FilterValueSchema = new Schema({
label: String,
color: String,
}, {
toJSON: {
virtuals: true,
},
});
此查询无效。 filterValue 是null:
let query = Project.findById(req.params.projectId, { _id: 0, filters: 1 });
query.populate('filters.filterValue');
我尝试使用虚拟填充:
ProjectFilterSchema.virtual('usedValue', {
ref: 'Filter',
localField: 'filterValue',
foreignField: 'values._id',
justOne : true,
});
但这会返回整个 Filter 文档,而不仅仅是所需的 FilterValue。
【问题讨论】: