sql >> Base de Datos >  >> NoSQL >> MongoDB

Filtrar por país y búsqueda de texto libre mongodb usando mongoose

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.