2016-03-31 14 views
1

私は作業中の自動完成入力ボックスを持っていて、入力からのデータに基づいてユーザオブジェクトを取得するmongooseエンドポイントを作ろうとしています。データは不完全である可能性がありますが、類似したものはすべて取得する必要があります。例:Mongoose:入力に似た名前を見つける

var input = "st"; 

// Should return a user object like this one. 

var userObject = { 
    name: { 
    full: 'Stephen Brinkworth', 
    first: 'Stephen', 
    last: 'Brinkworth' 
    } 
}; 

私は問題を調査しましたが、私が見たことから、推奨エンドポイントはこのように見えます。

User.find({name: {full: new RegExp(req.query.input, 'i')}}).exec(...); 

私が持っている唯一の問題は、私はこのエンドポイントを使用する場合、私は一貫して空の配列を取り戻すことです。誰もこれで私を助けることができますか?本当にありがとう。

答えて

0

あなたはMongoDBのの$regexクエリ演算子の使用を採用する必要があります:

は、クエリ内のパターンマッチング文字列の正規表現機能を提供します。

ドキュメントで指定され$regexオペレータは、次の構文のいずれかを使用して利用することができる。

{ <field>: { $regex: /pattern/, $options: '<options>' } } 
{ <field>: { $regex: 'pattern', $options: '<options>' } } 
{ <field>: { $regex: /pattern/<options> } } 

$regex演算子を使用して簡単な解決策は、次のようになります

var nameRegex = new RegExp(req.query.input); 
User.find({'name.full': {$regex: nameRegex, options: 'i'}}); 
+0

それは感謝:)私はちょうど 'name.full'を使用する必要があり、それは両方の方法が正しく動作するようにした。 – Xoman5144

関連する問題