mongoose发现不工作

这是我第一次在Node / Express / Mongoose中编写一个MVC应用程序,所以我真的可以使用一些帮助。 我的.find()命令只是找不到任何东西! 🙁

结构是我有一个/ app文件夹在根。 / app文件夹包含/ models(模式),/ controllers和/ views。 我在根外面有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中)有真实的数据。

有什么想法吗?

为此改变你的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; 

之后,你可以在控制台看到mongoose是否在做你的查询。

我和你描述的情况是一样的,事实certificate我不明白mongoose集合命名的神奇,在你的代码中它会尝试加载“技能”,如果这不是它在mongo中命名的东西,回。 应该真的折腾一个“所以这样的收集”错误,而不是imho。