2017-08-02 5 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プロパティにnull値を指定すると、エラーが発生します。空の文字列を指定すると、空の文字列で検索しているので、項目を返しません。

req.query.searchが空またはnullのときに$ textフィールドを省略した別のクエリを追加することなく、null値を処理するための$ searchの条件付きの方法はありますか?

答えて

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