2016-07-07 5 views
0

少し説明しましょう。アイデアはカテゴリを持つことで、各カテゴリに親カテゴリとサブカテゴリを持たせることもできますが、このツリーの深さがどれくらい深いかはわかりません。たとえば、次のように帆JS - 同じモデルと属性の深い住民

module.exports = { 
    attributes: { 
    name: { 
     type: 'string', 
     required: true, 
     unique: true 
    }, 
    products: { 
     collection: 'product', 
     via: 'category' 
    }, 
    parentCategory: { 
     model: 'category' 
    }, 
    subCategories: { 
     collection: 'category', 
     via: 'parentCategory' 
    } 
    } 
}; 

そして、私はすべてのカテゴリを取得する場合:

->Clothes 
-->Men 
--->Kids 
---->Newborns 
----->Etc, etc 
-->Women 
-->Unisex 

は、だから、私はCategory.jsモデルは、これらの属性を持つことができると考え

Category.find({}).populate('subCategories').exec(........ 

を私はリストを取得しますすべてのカテゴリとそのサブカテゴリのうち、サブカテゴリのサブカテゴリを持っていたいと思っています。以前に書いたツリー階層と同じですが、代わりに私は

服{のサブカテゴリ:[男性:{}、女性:{}、ユニセックス:{}]} 男性{.....

しかし、服の内側に、私は男性を持って、それが正しいのです。しかし、今この男性のオブジェクトの中に私は "キッズ"を持っていません。

私は明確ですか?

答えて

1

Populateメソッドは1つのレベル(現時点で)でしか機能しないため、内部に他のオブジェクトを設定してオブジェクト化してから投入することはできません。私は同様の機能を持っていて、このコードを見つけて書きました。多分あなたに役立つかもしれません:

return Object.findOne({ 
     id: id 
     }).populateAll().then(function (result) { 
     var otherObject= otherObject.find(result.id).then(function (otherResult) { 
      return otherResult; 
     }); 
     return [result, otherResult]; 
     }).spread(function (house, otherResult) { 
     result= result.toObject(); 
     result.otherResult= otherResult; 
     return result; 
     }); 
関連する問題