2015-11-20 56 views
0

我正在用grails 3和mongo構建一個REST api。當我需要編組更深的對象圖時,遇到了一個問題。有沒有辦法通過mongodb控制gorm中的加載關係?

我有以下結構域:

class Category extends Resource { 
    /* other fields */ 

    Category parent 
} 

class Product extends Resource { 
    /* other fields */ 

    List<Category> categories 
    static hasMany = [categories: Category] 
} 

我在數據庫中的以下結構(簡化爲便於理解):我從RestfullController創建我控制器時延伸

categories: 
{name: 'cat1'} 
{name: 'cat2', parent: 'cat3'} 
{name: 'cat3', parent: 'cat4'} 
{name: 'cat4', parent: 'cat5'} 
{name: 'cat5'} 

product: 
{categories: ['cat1', 'cat2']} 

。我希望能夠得到一個產品,並在返回的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()將不加載它?有沒有辦法來控制這種行爲?

回答

相關問題