2015-06-26 77 views
0

我正在用流星和JavaScript構建一個webapp,並且想要根據屬性過濾JSON對象。我可以運行fullList.find()以獲取所有內容,並且fullList.find({'Color': 'r'})僅獲取「紅色」項目,但是我想返回所有「紅色」或「藍色」項目,但無法找出正確的語法。我嘗試過各種組合,例如fullList.find({'Color': 'r' || 'b'})fullList.find({'Color': ('r' || 'b')}),但它不是完全運行,就是返回只有一個屬性的項目,而不是返回項目。我覺得這應該是一個簡單的解決方案,我只是不太熟悉JavaScript。。MongoDB中的.find()有多個條件

這是我的(相關)完整性代碼。僅在以下兩個條件爲真(與一個或三個)的邏輯失敗:

indicadores: function(){ 
     if (Session.get("displayUrgencies")){ 
      if (Session.get("displayInsuff")){ 
       if (Session.get("displayStrengths")){ 
        console.log("display all"); 
        return fullList.find(); 
       } 
       else { 
        console.log("display urgencies and insufficiencies"); 
        return fullList.find({'Color': 'v' || 'r'}); 
       } 
      } 
      else { 
       if (Session.get("displayStrengths")){ 
        console.log("display urgencies and strengths"); 
        return fullList.find({'Color': 'b' || 'r'}); 
       } 
       else { 
        console.log("display urgencies"); 
        return fullList.find({'Color': 'r'}); 
       } 
      } 
     } 
     else if (Session.get("displayInsuff")){ 
      if (Session.get("displayStrengths")){ 
       console.log("display insufficiencies and strengths"); 
       return fullList.find({'Color': 'v' || 'b'}); 
      } 
      else { 
       console.log("display insufficiencies"); 
       return fullList.find({'Color': 'v'}); 
      } 
     } 
     else if (Session.get("displayStrengths")){ 
      console.log("display strengths"); 
      return fullList.find({'Color': 'b'}); 
     } 
     else { 
      console.log("display all (default)"); 
      return fullList.find(); 
     }  
    }, 
+1

正如您目前所擁有的那樣,第二次返回從不運行。它在第一個返回中評估語句,然後返回,停止執行。 –

+0

這是偶然從我身上試圖想到的任何事情;如果沒有第二次回報,它仍然不起作用。我將編輯代碼以反映它現在的實際情況;對此感到抱歉 –

+0

你使用'.find'的庫是什麼? –

回答

4

.find功能不是JS本身的一部分。它是MongoDB集合的一個屬性。您可以簡單地使用$orMongoDB selector。像這樣:

fullList.find({ 
    $or: [ 
    {'Color': 'r'}, 
    {'Color': 'b'} 
    ] 
}) 

在你的例子中fullList是MongoDB集合。你可以閱讀更多關於他們here

+0

好吧,知道這是一個MongoDB命令非常有用,但它仍然不起作用。我收到錯誤消息「模板助手中的異常:錯誤:$和/ $或/ $也不能是非空數組」。 –

+1

我在那篇文檔中發現了一些非常接近你所說的爲我工作的東西。我的解決方案最後是fullList.find({Color:{$ in:['v','r']}}); 。謝謝您的幫助! –

+1

對不起,語法錯了。修復。 – Kriegslustig