2016-09-19 8 views
0

場所を見つけるためのオートコンプリートとして機能するクエリを書く必要があります。 elseステートメントは適切な国を見つけるのにうまくいきますが、ユーザーが "ドイツ、ベルリン"と書くと、アルゴリズムは "ベルリン"と呼ばれる都市を持つ他の国を投げます。例えば ​​"ドイツ"にある都市だけを検索する必要があります。2つの条件でマングース正規表現を検索する

フラグがクリアされるようにするには、検索パラメータの文字列にカンマがある場合にtrueになります。その後、国と都市で分割されます。

if(flag){ 
    World.findOne().or([{name:{$regex:country}},{cities: {$regex:city}}]).exec(function (err, users) { 
       if (err) return console.error(err); 
       console.log(users); 
       res.send(users); 
      }); 
}else{ 
    World.findOne({name:{$regex:val}}, {cities: {$slice: 10}}).exec(function (err, users) { 
       if (err) return console.error(err); 
       console.log(users); 
       res.send(users); 
      }); 
} 

私もこれを試してみましたが、それはコンパイルエラーがスローされます。

if(flag){ 
    World.findOne({{country:{$regex:country}},{cities: {$regex:city}}}).exec(function (err, users) { 
       if (err) return console.error(err); 
       console.log(users); 
       res.send(users); 
      }); 

)は(findOneに外側ブラケットを取り外すと同じことをしようとしました

+0

を試してみてください? – abdulbarik

+0

2番目の2番目のコードでは World.findOne({{country:{$ regex:country}}、例:{$ regex:city}}})。ex ^ SyntaxError:予期しないトークン{ –

答えて

0

私はあなたが適切なqueryを与えていないと思います値。

はあなたがいただきましたエラーを取得しているこの

if (flag) { 
    World.find({ 
    country: { 
     $regex: country 
    }, 
    cities: { 
     $regex: city 
    } 
    }).exec(function(err, users) { 
    if (err) return console.error(err); 
    console.log(users); 
    res.send(users); 
    }); 
} 
+0

ありがとうございます、今の魅力のように働いた!! –

+0

素晴らしい!あなたを助けてうれしい – abdulbarik