2016-07-05 13 views
0

タイトルが明確ではないかもしれませんが、達成したいのは、カテゴリがparentCategoriesであることです。たとえば:モデルを自分自身のコレクションにする

/-Clothes 
/---Men 
/---Women 
/---Kids 
/-----Newborns 

は、だから、私はすべてのカテゴリは、オプションの親カテゴリを持っていると私は親1とカテゴリを追加するたびに、この親カテゴリを見つけ、同様にそれに新しいサブカテゴリを追加する作ることができると思いました。私の言いたいことが分かりますか?

Category.js(モデル)

module.exports = { 
    connection: 'MongoDB', 

    attributes: { 
    name: { 
     type: 'string', 
     required: true, 
     unique: true 
    }, 
    description: { 
     type: 'string' 
    }, 
    products: { 
     collection: 'product', 
     via: 'category' 
    }, 
    parentCategory: { 
     model: 'category' 
    }, 
    subCategories: { 
     collection: 'category', 
     via: 'parentCategory' 
    }, 

    addSubCategory: function(sc) { 
     this.subCategories.push(sc); 
    } 
    } 
}; 

をそれが働いているように見えるdoesntの:

これは私がこれまで行ってきたものです。私は、私のコントローラ、SCからこの値は正しいがaddSubCategoryを呼び出しているが、カテゴリーに "subCategory"属性を追加することはない。私はこれが最良のアプローチではないかもしれないことを知っています。

答えて

0

subCategories属性は必要ありません。デザインに続いて私の提案があります。

module.exports = { 
    connection: 'MongoDB', 

    attributes: { 
     name: { 
     type: 'string', 
     required: true, 
     unique: true 
     }, 
     type: { 
     type: 'string', 
     enum: ['parent', 'subcategory'], 
     }, 
     description: { 
     type: 'string' 
     }, 
     products: { 
     collection: 'product', 
     via: 'category' 
     }, 
     parentCategory: { 
     model: 'category' // this exists only if type is 'subcategory' else null 
     }, 

     addSubCategory: function(sc) { 
     this.subCategories.push(sc); 
     } 
    } 
    }; 

ご不明な点がありましたら教えてください。

+0

これは、親カテゴリを検索せず、新しいカテゴリを追加します。カテゴリを階層的に設定することを希望します –

+0

サブカテゴリの別のモデルを作成することもできますが、このモデルは完全に機能するはずです。 'async'ブロックを使用してデータを取り込むことができます。 – khushalbokadey

関連する問題