私は2つのスキーマを持っています:
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
ブログ オブジェクトには、このブログが関連するすべてのカテゴリを取得できるオブジェクト (参照)の配列が含まれています。Blog
カテゴリ オブジェクトには、このカテゴリのすべてのブログを取得できるようにするためのオブジェクト (参照) の配列が含まれています。
問題は、特定のブログを取得しようとするときです。タイトルを取得するには、カテゴリ配列を設定する必要があります。
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
field . したがって、カテゴリ フィールドのすべてのオブジェクトは再帰的に入力され、ブログとカテゴリの間に相互リンクがあるため、ループで入力されますか?
人口レベルを制限するには?Blog/category[n]/blogs: []
にデータを入力したくありませんcategory
。. title
ありがとう。