MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Filtre por país e pesquisa de texto livre mongodb usando o mongoose


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.