【发布时间】:2016-05-16 07:41:11
【问题描述】:
我正在使用 Mongoose 版本 4.4.0 开发 MEAN 堆栈应用程序,并且在填充子文档数组时遇到问题。 (在 SO 的其他地方找不到解决方案。)
以下说明模型的结构:
签证模式
var visaSchema = new mongoose.Schema({
from: {type: Schema.Types.ObjectId, ref: 'Country'},
to: {type: Schema.Types.ObjectId, ref: 'Country'},
requirements: [
{type: Schema.Types.ObjectId, ref: 'Requirement'}
]
});
exports.model = mongoose.model('Visa', visaSchema);
需求模型
var requirementSchema = new mongoose.Schema({
visa: {type: Schema.Types.ObjectId, ref: "Visa"},
title: String,
body: String
});
exports.model = mongoose.model('Requirement', requirementSchema);
以上基本上构成了Visa 和Requirement 之间的一对多 关系。
问题
我无法填充 requirements 字段,该字段实际上是 Requirement ref 对象的数组。
这就是我试图实现它的方式:
Visa.find()
//.populate('from', null, {shortName: from})
//.populate('to', null, {shortName: to})
.populate('requirements')
.exec(function(err, result){
res.json(result);
});
每当我尝试填充 requirements 字段时,它都会在 requirements 键上返回一个空数组。
但是没有人口,它返回ObjectIds的数组:
[
{
"_id":"56b329878848eba00c0f5535",
"from"{
"_id":"56b2db1b57f9e71c1bfbadb9",
"name":"Germany",
"shortName":"DE",
"__v":0
},
"to":{
"_id":"56b2db0f57f9e71c1bfbadb8",
"name":"Afghanistan",
"shortName":"AFG",
"__v":0
},
"__v":3,
"requirements": [
"56b331d764585e8c12c14dd1",
"56b336431ffc49bc19bf1c96",
"56b33675443f033c14e26d03"
]
}
]
我做错了什么?
我们将不胜感激。
【问题讨论】:
标签: javascript node.js mongodb mongoose mongoose-populate