2017-05-25 3 views
0

MongoClientのcollection.find()メソッドにオブジェクトを渡そうとしていますが、値を引用符で囲む必要はありません。私はリテラルを渡すとそれが期待どおりに動作:引用符を含まないテキスト文字列でオブジェクトを作成するにはどうすればよいですか?

cursor = collection.find({EmployeeName: {'$regex': /Jo/i}}); 

をしかし、私は試してみて、のようなそのオブジェクトを構築する場合:

var queryt = "/Jo/i"; 
var queryo = { 
    EmployeeName: {'$regex': queryt} 
}; 

それは動作しません。私のアプリケーションquerytに実際にから返される「クエリ」オブジェクトから値を抽出することによって設定されていることを

{ EmployeeName: { '$regex': '/Jo/i' } } 

注:私はconsole.log(queryo)をすれば、私は「ジョー/ i」の前後に引用符があることがわかりますexpressから 'get'関数。たとえば、「?EmployeeName:/ Jo/i」の終了URLを持つWebページを呼び出しています。私の「取得」機能では私がやっている:

var queryt=req.query.EmployeeName; 

だから、基本的に私は、HTTP GETリクエストを経由してクエリを受け入れ、バックエンドサーバーであることを、このアプリをNode.jsの使用しようとしています。

私は引用符をストライピングするさまざまな方法を試みましたが、成功しませんでした。

これは初心者のタイプの質問ですが、私はちょうど学んで、それを回避するために何時間も費やしています。私はもっ​​と味付けしたnode.jsの開発者が、このオブジェクトをどのように構築して、collection.findがそれを受け入れるかをすぐに教えてくれることを願っています。ありがとう!

+0

現在、あなたは正規表現オブジェクトではなく文字列を作成しています。あなたが最初に示したように、 'var queryt =/Jo/i;'でなければなりません。 – nnnnnn

答えて

0

これは、文字列を作成します var queryt = "/Jo/i";に二重引用符を削除します。

これは正規表現に

更新が作成されますVAR queryt = /Jo/i;する必要があります:kcantrelた答えを。上記の方法は動作しません。方法の下で彼のために働く。

queryt = RegExp("jo", "i") 
+0

さて、私はそれを得る。私は単純にqueryt = RegExp( "jo"、 "i")を使って文字列を正規表現に変換する必要があります。なぜなら、find()が実際に期待しているものなのですから。 @kcantrel cool。 – kcantrel

+0

あなたの答えで自分の答えを更新できますか? –

+0

はい、どうぞ。あなたが私に言おうとしていたことを理解するまでにはしばらく時間がかかりました。あなたのせいではない、私の経験不足のために、私。しかし、「正規表現」が特定のオブジェクトであることがわかったら、私はすぐに自分が何をする必要があるのか​​を理解しました。 – kcantrel

関連する問題