Przede wszystkim mam nadzieję, że wiesz, że aby wykonać $text
zapytań opartych na indeks oparty na tekście na tym konkretnym polu.
Po drugie, wydajesz się mylić oddzwonienia i obietnice -
Jak widzę twoje query()
funkcja zwraca obietnicę nadal, gdy wywołujesz query()
funkcja, której oczekujesz wywołania zwrotnego. Obietnice są natychmiast zwracane, a następnie musisz je rozwiązać.
Twój kod powinien wyglądać tak -
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
}
Przeczytaj więcej o obietnicach tutaj .
Kolejny drobny błąd, który mogę zauważyć, to query()
metoda. Instrukcja if statement
nie używa nawiasów klamrowych i w rezultacie tylko następną instrukcję po instrukcji if statement
zostanie wykonany pod if statement
klauzula. Druga instrukcja po if statement
będzie zawsze wykonywany -
Tak więc,
if(error)
console.log(error);
// always executed
reject(error);
resolve(data);
powinno być -
if(error){
console.log(error);
reject(error);
}
resolve(data);
Nadal nie jestem pewien, czy to wszystko sprawi, że twój kod będzie działał, ponieważ nie widzę tutaj całego obrazu. I IMHO zaleca, abyś zainwestował trochę więcej czasu w podstawy javascript i MongoDB. Pomoże Ci zaoszczędzić dużo czasu. I o to chodzi oficjalne dokumenty MongoDB są naprawdę dobre.