2014-04-16 12 views
9

वापस नहीं मैं एक मार्ग की स्थापना की है कि एक मॉडल के नीचे की तरह तोदो कहा जाता है का उपयोग करता है:नेवला लगता है() परिणाम

app.get('/api/todos', function(req, res) { 
    Todo.find({},function(err, todos) { 
     if (err) 
      res.send(err); 
     console.log("number of todos " + todos.length); 
     res.json(todos); // return all todos in JSON format 
    }); 
}); 

हालांकि, todos.length हमेशा 0, के रूप में यह किसी भी परिणाम नहीं मिलता। जब मैं चलाएँ:

use test3 
db.Todo.find() 

मुझे यकीन है कि मैं एक ही डाटाबेस से कनेक्ट किया है हूँ। मैं मोंगोड कंसोल में कनेक्शन देख सकता हूं। मेरे कनेक्शन config/db.js फ़ाइल के अंदर है:

module.exports = { 
    url : 'mongodb://localhost/test3' 
} 

मेरी server.js में कनेक्शन इस प्रकार है:

var db = require('./config/db'); 
mongoose.connect(db.url); 
मोंगो शैल में

मैं 1 परिणाम मिलता है। मुझे उम्मीद है कि इस परिणाम को खोज क्वेरी द्वारा वापस किया जाएगा। क्या मुझे कुछ याद आया है? मैं नेवला 3.6

चीयर्स

+1

क्या आप वाकई अपने प्रोग्राम में उसी डेटाबेस से कनेक्ट कर रहे हैं जब आप खोल के साथ कर रहे हैं? यदि आप सुनिश्चित नहीं हैं तो अपने डेटाबेस कनेक्शन कोड और खोल के साथ अपने कनेक्शन का एक उदाहरण जोड़ें। –

+0

मैंने आपके द्वारा अनुरोधित कुछ और जानकारी जोड़े हैं – user3539643

+0

यह भी ध्यान में रखते हुए कि मोंगोज़ डिफ़ॉल्ट रूप से मॉडल नाम को बहुवचन करता है और साथ ही इसे लोअरकेस और अन्य नियमों में परिवर्तित करता है। तो जब तक आप इसे ओवरराइड नहीं कर लेते हैं, तो मोंगोज़ "टोडोस" नामक संग्रह की तलाश में है जो संभवतः मौजूद नहीं है। –

उत्तर

35

उपयोग कर रहा हूँ तो क्या यह बहुत ज्यादा लगता है कि आप पहले से ही एक मौजूदा डेटाबेस में संग्रह बनाया है और अब आप नेवला मॉडलों के साथ इन का उपयोग करने की कोशिश कर रहे हैं।

समस्या यह है कि मोंगोज़ कुछ डिफ़ॉल्ट का उपयोग करता है जिनके बारे में आपको पता नहीं हो सकता है, इसलिए उदाहरण जो आप खोल से दिखा रहे हैं वह वही नहीं है जो मोन्गोज डिफ़ॉल्ट रूप से कर रहा है।

तो आप या तो अपने संग्रह का नाम बदल सकते हैं जो कि मोन्गोज़ डिफ़ॉल्ट रूप से अपेक्षा करता है या आपके मौजूदा नामों से मेल खाने के लिए क्या मोन्गोज़ बदलता है। उत्तरार्द्ध मामले में, आप सीधे तो जैसे मॉडल नाम को परिभाषित:

mongoose.model("Todo", toDoSchema, "Todo"); 

तो method को तीसरा तर्क वास्तव में स्पष्ट नाम के संग्रह के लिए उपयोग करने के लिए निर्दिष्ट करता है। इसके बिना डिफ़ॉल्ट नियमों के तहत अनुमानित नाम "todos" होगा।

किसी भी विधि का उपयोग करें ताकि आप उन्हें मेल कर सकें।

+0

मेरे जीवन के 3-4 घंटे बचाया। :) – BangOperator

+0

शानदार :): डी –

+0

मुझे 2 घंटे के लिए इसी तरह का मुद्दा सामना करना पड़ा, मुझे अपने संग्रह के नाम के बाद "एस" जोड़ने की जरूरत है, ओएमजी ... टाई – PayteR

संबंधित मुद्दे