Първо, надявам се, че знаете, че трябва да изпълните $text
базирани заявки, трябва да имате текстов индекс в това конкретно поле.
Второ, изглежда, че обърквате обратните извиквания и обещанията -
Както виждам вашия query()
функцията все още връща обещание, когато извиквате query()
функция, която очаквате обратното извикване. Обещанията се връщат веднага при вас и след това трябва да ги разрешите.
Вашият код трябва да изглежда така -
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
}
Прочетете повече за обещанията тук .
Друг малък бъг, който мога да забележа, е в query()
метод. if statement
не използва фигурни скоби и в резултат на това само следващия оператор след if statement
ще се изпълни под if
клауза. Вторият оператор след if
винаги ще се изпълнява -
И така,
if(error)
console.log(error);
// always executed
reject(error);
resolve(data);
трябва да бъде -
if(error){
console.log(error);
reject(error);
}
resolve(data);
Все още не съм сигурен, че всичко това ще може да накара кода ви да работи, тъй като не мога да видя цялата картина тук. IMHO препоръчвам да инвестирате малко повече време в покриване на основите на javascript и MongoDB. Ще ви помогне да спестите много време. И по този въпрос официалните документи на MongoDB са наистина добри.