如何填充子文档的参考(猫鼬)

时间:2015-10-03 11:27:04

标签: node.js mongoose

如何在Sub Document中填充ref文档,这是我的架构:

var person = mongoose.Schema({
    name: { type: [String], index: true },
    career: [{
        position: { type: mongoose.Schema.Types.ObjectId, ref: 'Orgchart' }
    }]
};

var orgchart = mongoose.Schema({
        name: { type: [String], index: true },
};

我试过这部分:

person.find({ _id: "12345" }).populate('orgchart').exec(function(err, data){
  res.send(data);
});

当我使用

调用jade模板时出现错误Cannot read property 'name' of undefined
item.career._orgchart.name

2 个答案:

答案 0 :(得分:3)

您需要传递字段的点符号路径名以填充到populate来电:

person.find({ _id: "12345" }).populate('career.position').exec(function(err, data){
  res.send(data);
});

不确定您为什么要尝试使用来自Jade的_orgchart来访问此内容,因为它是position数组元素中相同的career字段填充引用的orgchart doc。

答案 1 :(得分:0)

感谢JohnnyHK先生

我用:

person.findOne({ _id: req.params.person }).populate('career.position career.grade').exec(function(err, data){
  res.send(data);
});

我在jade模板的循环数据中使用了item.position.name

由于