我有两个模型,具有多对少的关系,我正在建模如下:
// Portfolio
const portfoliosSchema = new Schema({
name: { type: String, required: true },
description: { type: String },
user: { type: Schema.Types.ObjectId, ref: 'User', required: true },
positions: [{
stock: { type: Schema.Types.ObjectId, ref: 'Stock', required: true },
cost: number,
amount: number,
}]
});
// Stock
const stocksSchema = new Schema({
exchange: { type: String, required: true },
symbol: { type: String, required: true },
company: { type: String },
description: { type: String }
});
如果不编写自定义服务/以羽毛友好的方式,我将如何:
- 查询投资组合并从股票集合中填充相关记录
- 简化对投资组合模式中嵌套位置的插入/更新(即不更新整个记录)
这是否受支持/我应该编写自定义服务和/或规范关系吗?
编辑- 解决了 #1 使用前钩子获取额外数据的第一个问题:
function(hook) {
const query = hook.params.query;
hook.params.query = Object.assign({},query,{
$populate: {
path: 'positions.stock',
select: 'exchange symbol'
}
});
}