2013-10-23 15 views
6

यह मेरी पहली बार नोड/एक्सप्रेस/मोंगोस में एक एमवीसी ऐप लिख रहा है, इसलिए मैं वास्तव में कुछ मदद का उपयोग कर सकता था। मेरा .find() कमांड कुछ भी नहीं मिला! :(Mongoose काम नहीं कर रहा

संरचना यह है कि मेरे पास रूट में एक/एप फ़ोल्डर है।/ऐप फ़ोल्डर में/मॉडल (स्कीमा),/नियंत्रक और/इसमें दृश्य हैं। और मेरे पास रूट में बाहर app.js है।

app.js में कहीं न कहीं:

// all necessary config/setup stuff.. 
var mongoose = require('mongoose'); 
mongoose.connect(config.db); 
var app = express(); 
require('./config/routes')(app) 

मेरी routes.js में दायर:

var skills = require('../app/controllers/skills'); 
app.get('/', skills.showall); 

मेरे नियंत्रक skills.js शामिल हैं:

var Skill = require('../models/skill'); 

exports.showall = function(req, res) { 
    Skill.find({}, function(err, docs){ 
     if (!err) { 
      res.render('index', {title: 'Skilldom', skills: docs}); 
     } 
     else { 
      throw err; 
     } 
    }); 
} 

अंत में मेरी मॉडल skill.js शामिल हैं:

var mongoose = require('mongoose'); 

//Skill schema definition 
var skillSchema = new mongoose.Schema({ 
    name: String, 
    length: String, 
}); 

var Skill = mongoose.model('Skill', skillSchema); 

module.exports = Skill; 

मेरे सूचकांक दृश्य प्रस्तुत हुई है, इसलिए मैं अपने index.jade टेम्पलेट से सामग्री देखते हैं, लेकिन किसी कारण से मॉडल में खोज आदेश प्राप्त करने में कठिनाई नहीं है कुछ भी। मैं पुष्टि कर सकता हूं कि मेरा डेटाबेस (MongoHQ में) असली डेटा है।

कोई विचार?

+0

क्या आपने अपने डेटाबेस में डेटा डालने के लिए मोंगोस का उपयोग किया था, या क्या यह किसी अन्य माध्यम से वहां पहुंचा? – robertklep

+0

मोंगोएचक्यू यूआई से .. –

+3

उस स्थिति में, आपको यह पता होना चाहिए कि कैसे मोंगोस उन संग्रहों को नामित करता है जो मॉडल संग्रहीत किए जाते हैं (उदाहरण के लिए, 'कौशल' मॉडल शायद 'कौशल' नामक संग्रह में संग्रहीत किया जाएगा)। संग्रह नाम मैन्युअल रूप से सेट करने के तरीके पर [डॉक्स] (http://mongoosejs.com/docs/guide.html#collection) देखें। – robertklep

उत्तर

10
अपने Skill.js के लिए इस

var mongoose = require('mongoose'); 
mongoose.set('debug', true); 

//Skill schema definition 

var skillSchema = new mongoose.Schema({ 
    name: String, 
    length: String, 
}); 

var Skill = mongoose.model('Skill', skillSchema); 
module.exports = Skill; 

उसके बाद, आप कंसोल पर देख सकते हैं नेवला आपके प्रश्नों कर रही है बदले

2

मैं वही स्थिति में था जैसा आप वर्णन करते हैं और यह पता चला है कि मैं आपके कोड में मोंगोज़ संग्रह नामकरण के जादू को समझ नहीं पाया था, यह "कौशल" को लोड करने का प्रयास करेगा और यदि ऐसा नहीं है तो इसका नाम क्या है मोंगो कुछ भी वापस नहीं किया जाएगा। वास्तव में imho के बजाय "इतना संग्रह" त्रुटि टॉस करना चाहिए।

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