2013-12-22 57 views
0

我一直在深入研究這個問題,發現沒有答案有效,沒有任何想要在Google上做的事情,所以我來這裏問這個問題。在貓鼬上填充模型的模型

你如何像這樣填充Schema?

var category_schema = new mongoose.Schema({ 
    name: {required: true, type: String}, 
    parent: {type: Number, ref: 'Category' }, 
    categories: [ {type: Number, ref: 'Category'} ] 
}); 

我在做什麼,現在是這樣的:

但這樣做的一個類別會的console.log控制檯上顯示:

[ { __v: 2, 
    _id: 18, 
    name: 'Categoria', 
    parent: null, 
    categories: 
    [ { __v: 1, 
     _id: 19, 
     name: 'Children', 
     parent: 18, 
     categories: [Object] }, // <= THIS SHOULD HAVE ACTUAL CATEGORIES 
     { _id: 20, name: 'Children 2', parent: 18, __v: 0, categories: [] } ] } ] 

任何形式的幫助會非常感謝。

謝謝。

編輯:

這是我用什麼來顯示時間了

ul.list-group 
    if inputs == true 
    li.list-group-item 
     .radio 
     label 
      input(type='radio', class='radio', name='parent_id' value='0') 
      = 'No category' 
    mixin make_list(categories, edit) 
    each category in categories 
     li.list-group-item 
     .radio 
      if inputs == true 
      input(type='radio', name='parent_id', value='#{category._id}') 
      = category.name 
    if categories.length 
    each category in categories 
     li.list-group-item 
     .radio 
      label 
      if inputs == true 
       input(type='radio', name='parent_id', value='#{category._id}') 
      = category.name 
     if category.categories.length 
     ul 
      +make_list(category.categories, edit) 

因爲我沒有答案,我開始對如何做到這一點挖通過自己...

現在,這可能不是最好的辦法,但噢,

category_schema.static('make_tree', function(callback) { 
    Category.find(function(err, categories) { 
    var parents_array = []; 
    for(var i = 0; i < categories.length; i++) { 
     var category = categories[i]; 
     if (category.parent == null || category.categories.length) { 
     categories[i].categories = []; 
     parents_array.push(categories[i]); 
     } 
    } 

    for(var x = parents_array.length -1; x >= 0; x--) { 
     for(var y = 0; y < categories.length; y++) { 
     if (categories[y].parent === parents_array[x]._id) { 
      console.log('adding ' + categories[y].name + ' to ' + parents_array[x].name); 
      parents_array[x].categories.push(categories[y]); 
     } 
     } 
    } 

    console.log(parents_array); 
    // Remove parents which have parents. 
    for(var i = parents_array.length - 1; i >= 0; i--) { 
     if (parents_array[i].parent) { 
     parents_array.splice(i, 1); 
     } 
    } 

    callback(parents_array); 
    }); 
}); 

事情是......,我仍然得到這個當我做了控制檯日誌:

PARENTS ARRAY NOW 
[ { __v: 1, 
    _id: 23, 
    name: 'Categoria', 
    parent: null, 
    categories: [ { parent: 23, name: 'Hijo', _id: 24, __v: 2, categories: [Object] } ] } ] 

回答

1

我想你可能會遇到的節點控制檯的奇思妙想。如果你做console.log(categories[0].categories)會發生什麼? (假設categories是該fisrt對象的名稱

+0

http://pastebin.com/RMGfZnDD這是打印的內容 – maltray

+0

所以這些是對db中類別的引用我不是貓鼬,但它看起來像你只需要爲這些類別進行額外的方法調用。 – Maus