Antes de tudo, espero que você saiba que para executar
$text consultas baseadas você precisa ter um índice baseado em texto nesse campo específico. Em segundo lugar, você parece estar confundindo retornos de chamada e promessas -
Como posso ver sua
query() a função está retornando uma promessa ainda quando você está chamando o query() função que você está esperando o retorno de chamada. As promessas são devolvidas imediatamente para você e você precisa resolvê-las. Seu código deve ficar assim -
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
}
Leia mais sobre Promessas aqui .
Outro pequeno bug que posso notar está no
query() método. A if statement não usa chaves e, como resultado, apenas a próxima instrução após a if statement será executado sob o if cláusula. A segunda instrução após o if será sempre executado - Então,
if(error)
console.log(error);
// always executed
reject(error);
resolve(data);
deveria estar -
if(error){
console.log(error);
reject(error);
}
resolve(data);
Ainda não tenho certeza de que tudo isso seria capaz de fazer seu código funcionar, pois não consigo ver a imagem inteira aqui. Eu IMHO recomendo que você invista um pouco mais de tempo cobrindo os conceitos básicos de javascript e MongoDB. Vai ajudá-lo a economizar muito tempo. Além disso, os documentos oficiais do MongoDB são realmente bons.