सबसे पहले मुझे आशा है कि आप जानते हैं कि $text
perform आधारित क्वेरी के लिए आपके पास टेक्स्ट आधारित इंडेक्सहोना चाहिए। ए> उस विशेष क्षेत्र पर।
दूसरे आप कॉलबैक और वादों को भ्रमित करने वाले लगते हैं -
जैसा कि मैं आपकी query()
देख सकता हूं जब आप query()
. को कॉल कर रहे हों तब भी फ़ंक्शन एक वादा लौटा रहा है फ़ंक्शन आप कॉलबैक की अपेक्षा कर रहे हैं। वादे आपको तुरंत वापस कर दिए जाते हैं और फिर आपको उन्हें हल करने की आवश्यकता होती है।
आपका कोड इस तरह दिखना चाहिए -
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
}
वादों के बारे में और पढ़ें यहां ।
एक और छोटी सी बग जो मैं देख सकता हूं वह है query()
तरीका। if statement
घुंघराले ब्रेस का उपयोग नहीं करता है और परिणामस्वरूप if statement
. के बाद केवल अगला कथन होता है if
. के तहत क्रियान्वित किया जाएगा खंड। if
. के बाद दूसरा स्टेटमेंट हमेशा निष्पादित किया जाएगा -
तो,
if(error)
console.log(error);
// always executed
reject(error);
resolve(data);
होना चाहिए -
if(error){
console.log(error);
reject(error);
}
resolve(data);
मुझे अभी भी यकीन नहीं है कि ये सभी आपके कोड को काम करने में सक्षम होंगे क्योंकि मैं यहां पूरी तस्वीर नहीं देख सकता। मैं आईएमएचओ अनुशंसा करता हूं कि आप जावास्क्रिप्ट और मोंगोडीबी मूल बातें कवर करने में कुछ और समय निवेश करें। आपका बहुत समय बचाने में मदद करेगा। और उस मामले के लिए MongoDB का आधिकारिक दस्तावेज़ वास्तव में अच्छे हैं।