2017-08-02 75 views
1

我有這樣的查詢。

Resource.find({ 
      isResource:true, 
      $text: {$search: req.query.search} 
     }).lean().exec(function(err, resources){ 
     if(err){ 
      next(err); 
      return; 
     }else{ 
      res.send(resources); 
     } 
    }); 

有時用戶不想輸入搜索查詢,因此只會返回所有真實的資源。但是,如果我向$ search屬性提供空值,則會出現錯誤。如果我提供一個空字符串,它將不返回任何項目,因爲它使用空字符串進行搜索。

是否有條件的方式讓$ search可以處理空值,而無需在req.query.search爲空或空時添加另一個省略$ text字段的查詢?

回答

1

沒有,但它是通過簡單編程組裝查詢忽略在查詢這個詞:

let query = { isResource: true }; 
if (req.query.search) { 
    query.$text = {$search: req.query.search}; 
} 
Resource.find(query).lean().exec(function(err, resources){ 
    if(err){ 
     next(err); 
     return; 
    }else{ 
     res.send(resources); 
    } 
}); 
+0

感謝的人。我最終這樣做了。乾杯。 – Garuuk