Pertama-tama saya harap Anda tahu bahwa untuk melakukan $text
kueri berbasis Anda harus memiliki indeks berbasis teks pada bidang tertentu.
Kedua, Anda tampaknya membingungkan panggilan balik dan janji -
Seperti yang saya lihat query()
fungsi masih mengembalikan janji saat Anda memanggil query()
fungsi Anda mengharapkan panggilan balik. Janji dikembalikan segera kepada Anda dan kemudian Anda harus menyelesaikannya.
Kode Anda akan terlihat seperti ini -
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
}
Baca selengkapnya tentang Janji di sini .
Bug kecil lainnya yang dapat saya perhatikan ada di query()
metode. if statement
tidak menggunakan kurung kurawal dan akibatnya hanya pernyataan berikutnya setelah if statement
akan dieksekusi di bawah if
ayat. Pernyataan kedua setelah if
akan selalu dieksekusi -
Jadi,
if(error)
console.log(error);
// always executed
reject(error);
resolve(data);
seharusnya -
if(error){
console.log(error);
reject(error);
}
resolve(data);
Saya masih tidak yakin semua ini dapat membuat kode Anda berfungsi karena saya tidak dapat melihat keseluruhan gambar di sini. Saya IMHO menyarankan Anda menginvestasikan lebih banyak waktu untuk membahas dasar-dasar javascript dan MongoDB. Akan membantu Anda menghemat banyak waktu. Dan dalam hal ini dokumen resmi MongoDB sangat bagus.