Sails JS - 深入填充相同的模型和属性

时间:2016-07-07 20:54:05

标签: javascript node.js model sails.js populate

让我解释一下。我们的想法是让类别和每个类别都有父类别和子类别,但我们不知道这棵树有多深。例如:

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

所以我认为我的Category.js模型可以具有以下属性:

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

当我得到所有类别时:

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

我得到了所有类别及其子类别的列表,但我也希望得到子类别的子类别,就像我之前写的树层次结构一样,但我得到了

衣服{subCategories:[男士:{},女士:{},男女皆宜:{}]} 男人{.....

但在衣服里面,我有男人,这是对的。但现在,在这个Men对象中,我没有"孩子"。

我清楚了吗?

1 个答案:

答案 0 :(得分:1)

Populate方法仅适用于一个级别(此刻),因此您无法填充和对象,然后填充其他内部。我有一个类似的功能,我发现并编写了这段代码,也许它可以帮助你:

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