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.