Prima di tutto spero che tu sappia che per eseguire $text
query basate è necessario disporre di un indice basato su testo su quel particolare campo.
In secondo luogo, sembri confondere i richiami e le promesse -
Come posso vedere la tua query()
la funzione restituisce ancora una promessa quando chiami query()
funzione che ti aspetti la richiamata. Le promesse ti vengono restituite immediatamente e poi devi risolverle.
Il tuo codice dovrebbe assomigliare a questo -
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
}
Ulteriori informazioni sulle Promesse qui .
Un altro bug minore che posso notare è nel query()
metodo. L'if statement
non usa le parentesi graffe e di conseguenza solo l'istruzione successiva all'if statement
verrà eseguito sotto il if
clausola. La seconda istruzione dopo if
verrà sempre eseguito -
Allora,
if(error)
console.log(error);
// always executed
reject(error);
resolve(data);
dovrebbe essere -
if(error){
console.log(error);
reject(error);
}
resolve(data);
Non sono ancora sicuro che tutti questi sarebbero in grado di far funzionare il tuo codice poiché non riesco a vedere l'intera immagine qui. Ti consiglio di investire un po' più di tempo coprendo le basi di javascript e MongoDB. Ti aiuterà a risparmiare un sacco di tempo. E del resto i documenti ufficiali di MongoDB sono davvero buoni.