2013-10-23 4 views
6

Questa è la prima volta che scrivo un'app MVC in Node/Express/Mongoose in modo da poter davvero usare un po 'di aiuto. Il mio comando .find() non trova nulla! :(Mangusta Trova non funzionante

La struttura è che ho una cartella/app nella root./Cartella app contiene/models (schemi),/controller e/views in essa e ho app.js all'esterno nella root.

Da qualche parte in app.js:

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

nei miei routes.js il file:

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

miei skills.js controller contiene:

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; 
     } 
    }); 
} 

Infine miei skill.js Modello contiene:

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; 

mia vista indice rende, quindi non vedo il contenuto dal mio modello index.jade, ma per qualche motivo il comando find nel modello non è il recupero nulla. Posso confermare che il mio database (in MongoHQ) ha dati reali.

Qualche idea?

+0

Hai usato Mongoose per inserire i dati nel tuo database o ci sono arrivati ​​con altri mezzi? – robertklep

+0

Dall'interfaccia di MongoHQ .. –

+3

In questo caso, è necessario essere consapevoli di come Mongoose assegni alle collezioni i modelli in cui sono memorizzati (ad esempio, un modello di 'Skill' verrà probabilmente memorizzato in una raccolta chiamata' skills'). Vedi [i documenti] (http://mongoosejs.com/docs/guide.html#collection) su come impostare manualmente il nome della raccolta. – robertklep

risposta

10

Cambia la tua Skill.js per questo

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; 

Dopo di che, si può vedere dalla console se mangusta sta facendo le vostre domande.

2

Ero nella stessa situazione che descrivi e risulta che non ho capito la magia della denominazione della raccolta mangimi, nel tuo codice cercherà di caricare le "abilità" e se non è quello che si chiama nel tuo mongo non verrà restituito nulla. Dovrebbe davvero lanciare un errore "così tale collezione" invece imho.