まず第一に、$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の公式ドキュメント 本当に良いです。