【发布时间】:2013-06-24 06:39:46
【问题描述】:
我有两个架构:
var categorySchema = mongoose.Schema({
title: String,
blogs: [{ type: ObjectId, ref: 'Blog' }]
})
var blogSchema = mongoose.Schema({
title: String,
description: String,
category: [{ type: ObjectId, ref: 'Category' }],
created: {type: Number, default: new Date().getTime()}
})
var Category = mongoose.model('Category', categorySchema)
var Blog = mongoose.model('Blog', blogSchema)
它们是相互参照的:
- 博客对象包含一组
Category对象(参考),以便能够获取与此博客相关的所有类别。 - Category 对象包含
Blog对象(refs)数组,以便能够获取该类别的所有博客。
问题是当我尝试获取某个博客时。我需要填充类别数组来获取它的标题:
Blog
.findOne({_id: _._id})
.populate('category')
.exec(function (err, __) {
callback(err, __);
})
我明白了……
{ title: 'My Blog',
description: 'description',,
_id: 51cb6bd845ba145e02000001,
__v: 0,
created: 1372285906662,
category:
[ { __v: 0,
_id: 51cb5ed6fd63867905000002,
priority: 3,
title: 'Music',
blogs: [Object] } ],
}
是的,我得到了类别标题,但我也在博客中得到了一些对象——它们也被填充了。但是博客对象可能包含很多子对象(帖子)我们记得category 字段。那么,类别字段中的所有对象都将被递归填充,并且由于我在博客和类别之间有交叉链接,它将循环填充?
如何限制人口水平?我不希望Blog/category[n]/blogs: []被填充,只直接category字段,例如title。谢谢。
【问题讨论】:
标签: node.js mongodb mongoose populate