猫鼬发现不工作

时间:2013-10-23 06:31:15

标签: node.js mongodb model-view-controller express 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);

我的控制器技能.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;
        }
    });
}

最后我的Model 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模板中的内容,但由于某种原因,模型中的find命令没有提取任何内容。我可以确认我的数据库(在MongoHQ中)有真实的数据。

有什么想法吗?

3 个答案:

答案 0 :(得分:10)

更改此{/ 1}}

Skill.js

之后,您可以在控制台上看到mongoose是否正在进行查询。

答案 1 :(得分:2)

我和你描述的情况相同,事实证明我不明白猫鼬收集命名的魔力,在你的代码中它会尝试加载“技能”,如果这不是它在你的mongo中的命名什么都不会归还。应该真的折腾“如此集合”错误而不是imho。

答案 2 :(得分:0)

下面的方法为您的收藏集提供一个替代名称

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

or 

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