【发布时间】:2013-11-01 07:11:03
【问题描述】:
这是我第一次在 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 中)有真实数据。
有什么想法吗?
【问题讨论】:
-
您是使用 Mongoose 将数据插入数据库,还是通过其他方式到达那里?
-
在这种情况下,您必须知道 Mongoose 如何命名存储模型的集合(例如,
Skill模型可能存储在名为skills的集合中)。手动设置集合名称见the docs。 -
啊啊。非常感谢 - 这成功了! :)
标签: node.js mongodb model-view-controller express mongoose