Antes que nada, espero que sepas que para realizar $text
consultas basadas en que necesita tener un índice basado en texto en ese campo en particular.
En segundo lugar, parece que confundes las devoluciones de llamada y las promesas:
Como puedo ver su query()
la función aún devuelve una promesa cuando llama a query()
función que está esperando la devolución de llamada. Las promesas se le devuelven inmediatamente y luego debe resolverlas.
Su código debería verse así:
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
}
Leer más sobre Promesas aquí .
Otro error menor que puedo notar está en query()
método. La sentencia if statement
no usa llaves y, como resultado, solo la declaración siguiente después de la declaración if statement
se ejecutará bajo el if statement
cláusula. La segunda declaración después de if statement
siempre se ejecutará -
Entonces,
if(error)
console.log(error);
// always executed
reject(error);
resolve(data);
debería ser -
if(error){
console.log(error);
reject(error);
}
resolve(data);
Todavía no estoy seguro de que todo esto pueda hacer que su código funcione, ya que no puedo ver la imagen completa aquí. En mi humilde opinión, le recomiendo que invierta más tiempo cubriendo los conceptos básicos de javascript y MongoDB. Te ayudará a ahorrar mucho tiempo. Y para el caso, los documentos oficiales de MongoDB son realmente buenos.