sql >> Database teknologi >  >> NoSQL >> MongoDB

Filtrer efter land og fritekstsøg mongodb ved hjælp af mongoose

Først og fremmest håber jeg, at du ved det for at udføre $text baserede forespørgsler, du skal have et tekstbaseret indeks på det pågældende felt.

For det andet ser du ud til at forvirre tilbagekald og løfter -

Som jeg kan se din query() funktion returnerer stadig et løfte, når du kalder query() funktion, du forventer tilbagekaldet. Løfter returneres straks til dig, og så skal du løse dem.

Din kode skal se sådan ud -

dbHelper.query(mongoose.model('events'), {$text: {$search: "Ade"},'place.location.country': "Australia"})
.then(function(result)){
    // you have your data here
}
.catch(function(err)){
    // an error occured
}
 

Læs mere om løfter her .

En anden mindre fejl, jeg kan bemærke, er i query() metode. if statement bruger ikke krøllet bøjle og som et resultat kun den allernæste sætning efter if statement vil blive udført under if klausul. Den anden sætning efter if vil altid blive udført -

Så,

if(error)
    console.log(error);
// always executed
reject(error);
resolve(data);
 

skal være -

if(error){ console.log(error); reject(error); } resolve(data);

Jeg er stadig ikke sikker på, at alle disse ville være i stand til at få din kode til at virke, da jeg ikke kan se hele billedet her. Jeg anbefaler IMHO, at du investerer mere tid i at dække javascript og MongoDB basics. Vil hjælpe dig med at spare en masse tid. Og for den sags skyld MongoDBs officielle dokumenter er rigtig gode.




  1. Oprettelse af tom samling i mongodb

  2. Beskæftiger sig med mongodb unikke, sparsomme, sammensatte indekser

  3. mongo createIndex baggrund blokerer skallen

  4. Sådan indstilles hash-nøgleudløb i redis i henhold til eksistensen af ​​nøglen