2016-07-07 10 views
0

Lassen Sie mich es ein wenig erklären. Die Idee ist, Kategorien zu haben und jede Kategorie kann eine Elternkategorie und eine Unterkategorie haben, aber wir wissen nicht, wie tief dieser Baum gehen kann. Zum Beispiel:Sails JS - Tief bevölkern das gleiche Modell und Attribut

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

Also dachte ich, dass mein Category.js Modell diese Attribute haben könnte:

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

Und wenn ich alle meine Kategorien:

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

erhalte ich eine Liste von allen Kategorien und seinen Unterkategorien, aber ich möchte auch die Unterkategorien der Unterkategorien haben, genau wie die Baumhierarchie, die ich vorher geschrieben habe, aber stattdessen bekomme ich

Kleidung {Subkategorien: [Men: {}, Frauen: {}, Unisex: {}]} Männer {.....

Aber im Inneren der Kleidung, ich habe Männer, das ist richtig. Aber jetzt innerhalb dieses Men-Objekts habe ich keine "Kinder".

Bin ich klar?

Antwort

1

Populate-Methode funktioniert nur auf einer Ebene (im Moment), so dass Sie nicht füllen und Objekt und dann bevölkern können andere innerhalb. Ich hatte eine ähnliche Funktion und ich fand und schrieb diesen Code, vielleicht kann es Ihnen helfen:

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; 
     }); 
Verwandte Themen