まず第一に、$textを実行することを知っていることを願っています ベースのクエリには、テキストベースのインデックスが必要です。 a> その特定の分野で。
第二に、あなたはコールバックと約束を混乱させているようです-
私が見ることができるようにあなたのquery() query()を呼び出しているときに、関数はまだpromiseを返しています コールバックを期待している関数。約束はすぐにあなたに返され、それからあなたはそれらを解決する必要があります。
コードは次のようになります-
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
}
約束についてもっと読む こちら 。
私が気付くことができるもう1つの小さなバグは、query()にあります。 方法。 if statement 中括弧を使用しないため、if statementの直後のステートメントのみを使用します。 ifの下で実行されます 句。 ifの後の2番目のステートメント 常に実行されます-
だから、
if(error)
console.log(error);
// always executed
reject(error);
resolve(data);
する必要があります-
if(error){
console.log(error);
reject(error);
}
resolve(data);
ここでは全体像を見ることができないため、これらすべてがコードを機能させることができるかどうかはまだわかりません。私は、javascriptとMongoDBの基本をカバーするためにもう少し時間を費やすことをお勧めします。あなたが多くの時間を節約するのに役立ちます。さらに言えば、MongoDBの公式ドキュメント 本当に良いです。