2017-07-07 5 views
1

mongooseモデルのクエリ文字列に問題があります。以下のコードは正常に動作しています。しかし、私はそれが動作していない文字列と同じクエリを構築する場合。 「クエリ」のコンソール出力は、私はこれが動作し、どのようにこの問題を解決するものではない理由を理解していないmongoose model.findクエリ文字列

'diagnosis_text_de': /.*depression.*/i 

です。

作業:

getByFullText = (req, res) => { 
    let query: String = '\'diagnosis_text_de\': /.*' + req.body.qICD + '.*/i'; 
    console.log(query); 
    this.model.find({ 
     'diagnosis_text_de': /.*depression.*/i 
    }, (err, docs) => { 
     if (err) { 
      return console.error(err); 
     } 
     res.json(docs); 
    }); 
} 

が機能していない:

... 
this.model.find({ query }, (err, docs) 
... 
+0

次のようにMongoDBの演算子$の正規表現と$オプションを使用することができます"それを 'Object'にして始めましょう。 '' req.body.qICD + '。*'、 'i')}; let query = {'diagnosis_text_de':新しいRegExp( '。*' + req.body.qICD + '。あなたはES6を '{query}'に使うこともできません。これは、 "query"がキーの名前でもあることを意味するからです。代わりにオブジェクト形式の建設。 –

+0

ありがとう!魅力のように動作します! –

答えて

0

親愛なるあなたはそれを「文字列にしないでください

getByFullText = (req, res) => { 
     let query = { 
      diagnosis_text_de:{ 
      $regex: req.body.qICD, 
      $options:"i" 
      } 
     } 
     this.model.find(query,(err, docs) => { 
      if (err) { 
       return console.error(err); 
      } 
      res.json(docs); 
     }); 
    }