2016-09-19 1 views
0

Ich muss eine Abfrage schreiben, die als Autocomplete für die Suche nach einem Standort funktioniert. Die Else-Anweisung funktioniert gut, wenn Sie das richtige Land finden, aber wenn ein Benutzer beispielsweise "Deutschland, Berlin" schreibt, wirft der Algorithmus andere Länder auf, die möglicherweise eine Stadt namens "Berlin" haben. Ich brauche es nur nach Städten zu suchen, die sich beispielsweise in "Deutschland" befinden.Mongoose Regex Suche mit zwei Bedingungen

Nur um es zu verdeutlichen, wird die Flag-Variable wahr, wenn ein Komma in der Suchparameter-Zeichenfolge ist. Es teilt sich dann in Land und Stadt auf.

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); 
      }); 
} 

Ich habe versucht, auch diese, aber es wirft einen Compiler-Fehler:

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); 
      }); 

das gleiche versucht, mit den äußeren Klammern in FindOne Entfernen()

+0

Versuchen Was Fehler erhalten Sie? – abdulbarik

+0

Auf dem zweiten zweiten Code bekomme ich World.findOne ({{country: {$ regex: country}}, {Städte: {$ regex: city}}}) ex ^ Syntaxerror:. Unerwartetes Token { –

Antwort

0

Ich glaube, Sie nicht die richtige query geben Wert.

diese

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

Danke, arbeitete jetzt wie ein Charme !! –

+0

Großartig !! Froh dir zu helfen – abdulbarik