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.