我是Mongo db / Mongoose的新手,这个问题是关于mongoose和集合之间的关系,我知道有很多关于如何使这项工作的教程,但仍然无法理解一个简单的方法来做到这一点工作。我有两个型号:
这是主要模式:
'use strict';
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var CategorySchema = new Schema({
name : String,
info : String,
items : [{ type: Schema.Types.ObjectId, ref: 'Item' }]
});
var itemsSchema = Schema({
name : String,
description : String,
price : Number
});
var Item = mongoose.model('Item', itemsSchema);
module.exports = mongoose.model('Category', CategorySchema);
我需要在类别集合中填充items数组,并在两个集合之间创建关系。
当我从邮递员那里发帖后,我可以看到物品数组被创建但我无法填充数组。
如果我确实得到了类别,这就是回复:
[
{
"_id": "564120be4123198a1f93feb5",
"name": "Classic",
"info": "this is the info",
"__v": 0,
"items": []
},
{
"_id": "5641220b02968e901f678ff5",
"name": "Classic",
"info": "this is the info",
"__v": 0,
"items": []
}
]
这是api / categories /
的放置结果 {
"_id": "564120be4123198a1f93feb5",
"name": "test again",
"info": "this is the info",
"__v": 1,
"items": []
}
期望的输出:
{
"_id": "564120be4123198a1f93feb5",
"name": "test again",
"info": "this is the info",
"__v": 1,
"items": [
{
"_id": "some id"
"name": "name",
"description": "lorem ipsup"
},
{
"_id": "some id"
"name": "name",
"description": "lorem ipsup"
},
{
"_id": "some id"
"name": "name",
"description": "lorem ipsup"
},
]
}
答案 0 :(得分:0)
即使您在类别中有引用,也应使用populate
方法通知mongoose您希望他检索引用的项目。
类似的东西:
var Category = require('./category.model');
Category.find().populate("items");
如果您只想填充项目模型的一个字段,可以将其添加到populate的参数:
Category.find().populate("items","name");
我不知道你想要实现什么,但在我看来,另一种方式可能更有益(将类别引用到项目模型中)。