Я строю REST api с grails 3 и mongo. Я столкнулся с проблемой, когда мне нужно маршалировать граф объектов с большей глубиной.Есть ли способ контролировать отношения загрузки в gorm с mongodb?
У меня есть следующие домены:
class Category extends Resource {
/* other fields */
Category parent
}
class Product extends Resource {
/* other fields */
List<Category> categories
static hasMany = [categories: Category]
}
У меня есть в базе данных следующей структура (упрощенный для понимания):
categories:
{name: 'cat1'}
{name: 'cat2', parent: 'cat3'}
{name: 'cat3', parent: 'cat4'}
{name: 'cat4', parent: 'cat5'}
{name: 'cat5'}
product:
{categories: ['cat1', 'cat2']}
Я простирающийся от RestfullController при создании своих контроллеров , Я хочу иметь возможность получить продукт и иметь категории с родителями в возвращенном json.
Я получаю следующие результаты:
/product/${id}
{
id: '...',
categories: [{
id: '...',
name: 'cat1'
}, {
id: '...',
name: 'cat2',
parent: { id: '...' }
}]
}
/category/cat2id
{
id: '...',
name: 'cat2',
parent: { id: '...' }
}
/category
[{
id: '...',
name: 'cat1'
},{
id: '...',
name: 'cat5'
},{
id: '...',
name: 'cat4',
parent: {
id: '...',
name: 'cat5'
}
},{
id: '...',
name: 'cat3',
parent: {
id: '...',
name: 'cat4',
parent: {
id: '...',
name: 'cat5'
}
}
},{
id: '...',
name: 'cat2',
parent: {
id: '...',
name: 'cat3',
parent: {
id: '...',
name: 'cat4',
parent: {
id: '...',
name: 'cat5'
}
}
}
}]
Почему Category.list() загружать всю категорию графа объектов, и Category.get(), Product.get() и Product.list() будет не загружать? Есть ли способ контролировать это поведение?