2015-03-31 46 views
0

所以我遇到了一些麻煩。我有一個引號列表,每個引號都有類別。嘗試使用meteor&mongo過濾基於''Category「的」Quotes「

我不確定如何構建這個的最佳解決方案,所以我決定做2個集合。一個用於「行情」,一個用於「類別」。

每個「Quote」都有一個「Category」,它是我插入數據庫的類別的_ID。

我想「過濾」基於「類別」的引號列表,我點擊了我的web應用程序。

我很難找出如何解決這個問題。

到目前爲止,我已經創建了存儲我的「被點擊分類ID」但是從那裏我不知道如何過濾我的「行情」的數據庫顯示

「帶來類別ID = SESSION CAT_ID ONLY行情」會話

任何幫助,非常感謝。

回答

0

你應該真的指出你現在的代碼是什麼樣的,所以我們有一個從頭開始的參考。然而,這是一個相當簡單的任務,所以我已經先行一步,並提供了一個模擬例子:

模板:

{{#each quoteCategories}} 
    <button class="quote-category" value="{{_id}}">{{title}}</button> 
{{/each}} 

<ul> 
{{#each quotes}} 
    <li>"{{content}}" &mdash; {{author}}</li> 
{{/each}} 
</ul> 

模板事件

Template.quotesList.events({ 
    'click button.quote-category': function(event) { 
     var categoryId = $(event.target).val(); 
     Session.set('quote-category-id', categoryId); 
    } 
}); 

模板助手

Template.quotesList.helpers({ 
    'quoteCategories': function() { 
     return QuoteCategories.find({}); 
    }, 
    'quotes': function() { 
     var categoryId = Session.get('quote-category-id'); 
     if(categoryId) {    
      return Quotes.find({category: categoryId}); 
     } else { 
      return Quotes.find({}); 
     } 
    } 
}); 

你的收藏架構很好。像MongoDB這樣的noSQL數據庫最好的事情之一是,你可以根據自己的需要真正選擇規範化或非規範化。因此,如果您的結構更容易與兩個集合一起工作,那麼這很好。一般來說,確定數據庫結構的最佳方法是針對最重用的應用程序進行優化,因此對於大量讀取應用程序(大多數情況下)可以更簡單地進行讀取,或者對於大量寫入應用程序,可以更容易地進行讀取(插入,更新)。結構可以根據這些需求而變化。

+0

謝謝,我其實寫了幾乎完全相同的東西。這比我想象的要簡單。 – user2302401 2015-03-31 02:35:04

+0

@ user2302401 Nps,請在得到機會時標記答案正確(勾選)。確定基本知識的好地方是:http://meteortips.com/book/ – 2015-03-31 02:44:15