Först och främst hoppas jag att du vet det för att utföra $text
baserade frågor du behöver för att ha ett textbaserat index på just det fältet.
För det andra verkar du blanda ihop återuppringningar och löften -
Som jag kan se din query()
Funktionen returnerar fortfarande ett löfte när du anropar query()
funktion du förväntar dig återuppringningen. Löften returneras omedelbart till dig och sedan måste du lösa dem.
Din kod bör se ut så här -
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 mer om löften här .
En annan mindre bugg som jag kan lägga märke till är i query()
metod. if statement
använder inte lockigt klammerparentes och som ett resultat endast nästa sats efter if statement
kommer att köras under if
klausul. Den andra satsen efter if
kommer alltid att köras -
Så,
if(error)
console.log(error);
// always executed
reject(error);
resolve(data);
ska vara -
if(error){
console.log(error);
reject(error);
}
resolve(data);
Jag är fortfarande inte säker på att alla dessa skulle kunna få din kod att fungera eftersom jag inte kan se hela bilden här. Jag rekommenderar IMHO att du investerar lite mer tid i att täcka JavaScript och MongoDB grunderna. Kommer att hjälpa dig att spara mycket tid. Och för den delen MongoDB:s officiella dokument är riktigt bra.